Outils pour utilisateurs

Outils du site


objc:regles_de_comptage_des_references

Comptage des références

ARC ou ne pas ARC ! Telle est la question

Compter les références

  • alloc, new, copy, mutableCopy… –> ARP. Propriétaire de l'objet. Compteur de références = 1
  • SINON –> NON ARP. Pas propriétaire de l'objet. Compteur de références = 1
  • Pour retenir un objet dont on N'EST PAS propriétaire
    [monObjet retain]
  • Pour décrémenter le compteur de références d'un objet non ARP
    [monObjet release]
  • Pour décrémenter le compteur de références d'un objet ARP
    [monObjet autorelease]
  • Un objet continue d'exister tant que son compteur de références est supérieur à zéro, donc tant qu'il a au moins un propriétaire.
  • Lorsque le compteur de référence d'un objet atteint zéro, il reçoit dealloc.

Callbacks et propriétés

L'utilisation de callbacks, délégués ou notifications peut poser des problèmes de propriétés des objets. Quelques règles :

Notifications

  • Les notification centers ne sont pas propriétaires des observers. Un observer doit se retirer du centre de notification
- (void)dealloc 
{
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
}

Délégués

  • les objets ne sont pas propriétaires de leurs délégués et sources de données. La méthode dealloc du délégué ou de la source de données doivent se retirer eux-même :
- (void)dealloc 
{
    [objetQuiMeFaitTravailler setDelegate:nil];
    [objetQuiUtiliseMesDonnées setDataSource:nil];
}

Cibles

  • Les objets ne sont pas propriétaires de leurs cibles. Une cible doit mettre à zéro le pointeur de cible dans sa méthode dealloc
- (void)dealloc 
{
    [objetQuiMenvoieDesMessages setTarget:nil]; 
}
objc/regles_de_comptage_des_references.txt · Dernière modification: 2016/10/17 13:56 (modification externe)