Accueil Médias sociaux Gestion de la mémoire pour l'application iOS - Les nuls

Gestion de la mémoire pour l'application iOS - Les nuls

Table des matières:

Vidéo: TUTORIEL | COMMENT UTILISER L' APPLICATION FICHIERS SUR UN IPHONE | IPAD 2025

Vidéo: TUTORIEL | COMMENT UTILISER L' APPLICATION FICHIERS SUR UN IPHONE | IPAD 2025
Anonim

Aussi puissant soit-il, l'iPhone - et même l'iPad - dispose de ressources limitées, et la plus importante de ces ressources pour les applications iOS est la mémoire. vraiment comprendre comment gérer la mémoire correctement dans votre application, vous devez comprendre comment fonctionne la mémoire iOS

Gestion de la mémoire

Chaque fois que vous (ou un objet cadre) créez un objet en utilisant Objective-C, vous allouez de la mémoire pour Bien que les appareils iOS et le Mac utilisent tous ce que l'on appelle la mémoire virtuelle , contrairement au Mac, la mémoire virtuelle dans iOS est limitée à la quantité réelle de mémoire physique. le gestionnaire de mémoire libère les pages de mémoire qui contiennent du contenu en lecture seule (tel que du code).

De cette façon, tout ce qu'il a à faire est de charger les "originaux" Contrairement à ce que fait le Mac, iOS ne stocke pas temporairement de mémoire «modifiable» (telle que des données d'objet) sur le disque pour libérer de l'espace et en lire les données plus tard quand c'est nécessaire. Cet état de choses limite la quantité de mémoire disponible.

Comme vous pouvez le voir, lorsqu'un objet utilise la mémoire, il est essentiel que la mémoire soit libérée pour être utilisée par d'autres objets.

Si la mémoire continue à être limitée, le système peut également envoyer des notifications à l'application en cours d'exécution, lui demandant de libérer de la mémoire supplémentaire. C'est l'un des événements critiques auxquels toutes les applications doivent répondre.

En Objective-C, la mémoire est gérée dans les applications iOS par comptage de référence - en gardant le système à jour pour savoir si un objet est actuellement utilisé. Lire la suite pour tous les détails.

Référence comptant

En fait, la gestion de la mémoire est simplement un exercice de comptage. Chaque objet a son propre compte de référence, ou retain count, qui est le nombre d'autres objets qui utilisent actuellement l'objet. Tant que le nombre de rétention est supérieur à zéro, le gestionnaire de mémoire suppose que quelqu'un se soucie de cet objet et le laisse seul.

Lorsque le nombre de retenues d'un objet est nul, le gestionnaire de mémoire sait que personne n'en a plus besoin et envoie à l'objet un message de désallocation, et ensuite sa mémoire est renvoyée au système pour être réutilisée.

Ce processus semble assez simple, mais comment le compte de retenue est-il incrémenté et décrémenté? Jusqu'à Xcode 4. 2 et iOS 5. 0, vous deviez gérer le nombre de retenues dans votre application. Lorsqu'un objet est créé via alloc ou new ou via un message copy copy ou muteableCopy, le paramètre retain de l'objet est défini sur 1.

Lorsque votre application utilise l'une de ces méthodes, la propriété est transférée à l'objet qui a envoyé le message. est, l'objet a été conservé et cet objet qui a envoyé le message devient un propriétaire non exclusif de l'objet. Propriété signifie ici que l'objet sera là pour l'utiliser jusqu'à ce qu'il soit explicitement libéré en lui envoyant un message quand il n'est plus nécessaire.

Avant Xcode 4. 2 et iOS 5. 0, si vous n'avez pas créé d'objet par l'une de ces méthodes, mais que vous vouliez devenir propriétaire, assurez-vous que l'objet est resté à votre disposition jusqu'à ce que vous soyez fait avec, c'était à vous d'envoyer un message de retenue pour augmenter le nombre de retenue, et quand vous avez fini, d'envoyer un message de libération.

Cela était dû au fait que le créateur de l'objet (qui a fait que le compte de retenue était réglé sur 1) l'a libéré automatiquement - a envoyé à l'objet un message de libération qui le relâchera plus tard (généralement la prochaine fois est saisi).

Ceci est utile dans les cas où vous voulez renoncer à la propriété d'un objet mais évitez la possibilité qu'il soit désaffecté immédiatement (par exemple lorsque vous renvoyez un objet d'une méthode). Dans les deux cas, vous mainteniez un pointeur sur l'objet afin qu'il puisse être utilisé.

Bien que cette approche fût simple en théorie, c'était un vrai casse-tête pour les programmeurs. La grande majorité des pannes de système s'est produite parce que les applications manquaient de mémoire et étaient arrêtées par le système. Dans certains de ces cas, l'application n'a pas répondu aux méthodes d'avertissement de la mémoire et gère les avertissements de manque de mémoire.

Cependant, la plupart du temps, même si l'application répondait aux avertissements de faible mémoire, elle était limitée à ce qu'elle pouvait faire parce que la mémoire avait fui. La mémoire était réellement disponible car certains objets n'étaient pas utilisés, mais la mémoire de ces objets n'avait pas été restituée au système. Il n'y avait plus de pointeurs sur ces objets, donc ils ne pouvaient pas être libérés puis désalloués et la mémoire réutilisée.

Les développeurs ont plusieurs façons de gérer la mémoire automatiquement. L'un est garbage collection, qui balaye la mémoire et libère des objets qui n'ont aucun pointeur.

La récupération de place pour Objective-C était disponible sur Mac, mais la récupération de place a rencontré quelques problèmes. Il peut démarrer et mettre en veille vos applications au moment le plus inopportun, et cela affecte les performances et l'expérience de l'utilisateur, car vous n'avez aucun contrôle, ou aucune idée, quand cela se produira. Il n'a jamais été implémenté sur iOS et est obsolète depuis OS X 10. 8 (Mountain Lion).

Toute cette gestion de la mémoire dans votre application a été modifiée avec les dernières versions du compilateur Objective-C, désormais équipé du comptage automatique des références (ARC), activé par défaut à chaque fois que vous créer un projet ARC fait pour vous dans le compilateur ce que vous deviez faire par vous-même. Il gère toutes ces versions, autoreleases, et conserve pour vous.

Gestion de la mémoire pour l'application iOS - Les nuls

Le choix des éditeurs

Comment détecter les atteintes à la sécurité sur vos fichiers journaux Web hébergés - dummies

Comment détecter les atteintes à la sécurité sur vos fichiers journaux Web hébergés - dummies

Grande question est toujours sur la sécurité. Comment pouvez-vous repérer les failles de sécurité hébergées sur le Web pour protéger votre site et garantir qu'il ne sera pas piraté? La réponse courte est la suivante: Vous ne pouvez pas. Tout est piratable avec suffisamment de temps, des cerveaux sournois et des ressources. Cependant, il y a des choses que vous pouvez faire pour vous protéger un peu. ...

Comment utiliser MySQL Workbench pour votre site Web - dummies

Comment utiliser MySQL Workbench pour votre site Web - dummies

Bien que phpMyAdmin et d'autres outils d'hébergement Web Pour gérer les bases de données, il est possible que vous ayez besoin de quelque chose de plus puissant. MySQL Workbench est une bonne source dans cette instance. MySQL Workbench est un outil de conception et d'administration de base de données gratuit créé par Oracle qui réunit deux produits: MySQL Query Browser et MySQL ...

Le choix des éditeurs

Comment mettre du texte sur un cercle dans QuarkXPress - texte fictif

Comment mettre du texte sur un cercle dans QuarkXPress - texte fictif

Sur un cercle - c'est-à-dire texte suivant l'extérieur d'un cercle ou ovale - est un élément de conception commun dans les mises en page. C'est vraiment facile à faire dans QuarkXPress, mais ce n'est pas du tout évident comment. Procédez comme suit: Obtenez l'outil Ovale de la palette Outils et dessinez ...

ÉChanges peer-to-peer par rapport aux échanges Bitcoin réguliers - mannequins

ÉChanges peer-to-peer par rapport aux échanges Bitcoin réguliers - mannequins

Deux types d'échanges de bitcoins sont utilisés : peer-to-peer et régulier. D'une part, il y a les échanges de bitcoins réguliers, qui utilisent un carnet de commandes pour faire correspondre les ordres d'achat et de vente entre les personnes. Cependant, ni l'acheteur ni le vendeur n'ont la moindre idée de l'identité de l'autre partie, ce qui permet à tous les utilisateurs ...

L'interface d'application QuarkXPress - les nuls

L'interface d'application QuarkXPress - les nuls

Les palettes visibles à gauche, à droite et en bas de QuarkXPress sont flottantes - vous pouvez les faire glisser n'importe où qui vous convient. Contrairement aux palettes, les menus de la barre de menu sont collés: vous devez toujours passer la souris à la barre de menu pour y accéder. Cependant, ...

Le choix des éditeurs

Sept erreurs d'optimisation de moteur de recherche - nuls

Sept erreurs d'optimisation de moteur de recherche - nuls

Lorsque vous essayez d'obtenir votre site Web, c'est facile de faire des erreurs d'optimisation de moteur de recherche. Voici quelques-unes des erreurs de référencement les plus courantes. Vous ne connaissez pas vos mots-clés C'est également un problème majeur: la grande majorité des sites sont créés sans que les propriétaires ou les développeurs du site ne sachent vraiment ce que sont les mots-clés ...

Soumission de pages aux moteurs de recherche pour l'optimisation - dummies

Soumission de pages aux moteurs de recherche pour l'optimisation - dummies

Vous avez probablement vu "soumission "Services annoncés pour le référencement, peut-être sous la forme de spam dans votre boîte de réception, offrant de soumettre votre site Web à des centaines de moteurs de recherche, encore et encore. Dans la plupart des cas, ces services de soumission sont une perte totale de temps et d'argent. Voici comment obtenir votre site Web dans les moteurs de recherche. You ...

Six mythes À propos de Search Engine Optimization - mannequins

Six mythes À propos de Search Engine Optimization - mannequins

Il existe une grande confusion dans le monde des moteurs de recherche. beaucoup de mythes. Voici quelques-uns des mythes communément crus qui peuvent nuire à vos positions de moteur de recherche. Tout est une question de métabalises et de soumissions. C'est le mythe le plus répandu et le plus préjudiciable de tous, tenu par de nombreux concepteurs et développeurs Web. ...