Comment fonctionne le compteur de référence automatique sous iOS? En fait, ce sujet a été plus facile à comprendre pour moi une fois que je me suis familiarisé avec le compteur de référence manuel. Cet article est trÚs simple pour vous aider à comprendre le fonctionnement de la gestion de la mémoire sous iOS.
Il existe plusieurs outils de gestion de la mémoire sous iOS:
MRC - Compteur de référence manuel
MRC est une gestion manuelle des liens par code. Dans les premiers temps et Ă l'Ă©poque prĂ©historique, les dĂ©veloppeurs gĂ©raient eux-mĂȘmes le comptage de rĂ©fĂ©rences par Ă©quipes. C'Ă©tait, pour le dire lĂ©gĂšrement, difficile:
alloc - création d'un objet (création d'un lien)
retenir - référence à celui-ci (+1 au lien)
release - décrémente le nombre de références (-1)
dealloc - si le nombre de références est 0 = déchargement de la mémoire
Fondamentalement, vous allouez un objet, vous l'enregistrez à un moment donné, puis vous envoyez une version pour chaque allocation / sauvegarde que vous envoyez. La méthode dealloc est appelée sur un objet lorsqu'il est supprimé de la mémoire.
ProblĂšmes:
Vous devez constamment compter retenir, libérer
crash lors de l'accÚs à partir de la mémoire déchargée
oublié de mettre la version - fuite de mémoire
ARC - Compteur de référence automatique
, , , - iOS . . ARC . . , ARC , .
?
(release/retain - ) dealloc -
properties change - weak/strong
property :
strong - retain
weak - assign.
, ARC:
Le cycle de conservation se produit lorsque la quantitĂ© d'espace allouĂ© en mĂ©moire ne peut pas ĂȘtre rĂ©cupĂ©rĂ©e en raison de cycles de sauvegarde. Ătant donnĂ© que Swift utilise le comptage automatique des rĂ©fĂ©rences (ARC), une boucle d'enregistrement se produit lorsque deux ou plusieurs objets contiennent des rĂ©fĂ©rences fortes les uns aux autres. En consĂ©quence, ces objets se conservent en mĂ©moire, car leur nombre de sauvegardes ne diminuera jamais Ă 0, ce qui empĂȘchera la fonction deinit d'ĂȘtre appelĂ©e et de libĂ©rer de la mĂ©moire.
La solution est triviale: rendre l'un des liens faible.
Cet article est plus basique et introductif aux bases de la gestion de la mémoire dans iOS, pour une compréhension conceptuelle facile.