objective-c - OC 在初始化方法或者是 dealloc 中最好不要使用属性,为什么?
習慣沉默
習慣沉默 2017-05-02 09:29:36
0
3
690

看过好几次这种描述:在初始化方法或者是 dealloc 中最好不要使用属性,因为无法确定 self 到底是不是确实调用的是你想要的实例,这个是为什么呢?

習慣沉默
習慣沉默

répondre à tous(3)
漂亮男人

Où l’avez-vous regardé ? Tout cela appartient au passé, il n’y a aucune restriction dans ARC, vous pouvez l’utiliser comme vous le souhaitez.

Dans l'ancien temps de la gestion manuelle de la mémoire, appeler des attributs impliquait d'ajouter ou de soustraire des compteurs de références, et self = [super ...] l'objet initialisé n'est pas nécessairement un objet de la classe actuelle, il peut s'agir d'une "variante" ou d'une classe privée (objc en classe a la différence entre class et metaclass), donc si vous ne savez pas comment ajouter ou soustraire le compteur de référence dans la méthode de définition d'attribut, vous ne pouvez conserver et libérer que pour ivar.

- (id)initWithString:(NSString *)str
{
    self = [super init];
    if (self) {
        _foo = [str copy];
    }
    return self;
}

- (void)dealloc
{
    [_foo release];
    [super dealloc];
}

retain(copy,new) et release apparaissent par paires

给我你的怀抱

Parce que cela générera des références circulaires, comme délégué, qui ne seront jamais publiées

漂亮男人

Parce qu'il existe des catégories (Catégorie), des setters, des getters, des KVO, etc., vous devez y prêter attention
Le plus important est que la grammaire peut appeler les propriétés et les méthodes de classification, mais _. ne fonctionne pas, il faut faire attention

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal