ios - Pourquoi certains livres disent-ils que les méthodes d'initialisation et de dealloc doivent toujours lire et écrire des données via des variables d'instance?
我想大声告诉你
我想大声告诉你 2017-05-17 10:05:31
0
1
958

Objectif efficace -c2.0 Ce livre dit que dans la méthode d'initialisation et la méthode de dealloc, vous devez toujours lire et écrire des données via des variables d'instance. Après l'avoir lu pendant longtemps, je n'ai pas compris la raison ? Quelqu'un a-t-il lu ce livre ?

我想大声告诉你
我想大声告诉你

répondre à tous(1)
黄舟

N'est-ce pas très clair dans le livre :

  • _name = @"Jack" Attribue des valeurs aux variables directement sans envoyer de messages via le setter, ce qui est rapide. _name = @"Jack" 不经过setter的消息发送,直接为变量赋值,速度快。

  • 对于以下的 name 属性:

@property (nonatomic, copy) NSString *name;

直接赋值是: _name = @"Jack"; ,通过 self.name = @"Jack" 其实等同于 _name = @"Jack".copy;

  • self.name = @"Jack" 会触发KVO,_name = @"Jack" 不会

  • self.name = @"Jack" 可以在 setter 方法中进行断点调试,每次赋值你都知道。

所以有一种合理折中方案就是,读取数据的时候用 NSString *str = _name,赋值用 self.name = @"Jack"

另外需要注意的是子类可能复写setter方法,用 self.name = @"Jack"可能不等同于 _name = @"Jack".copy

Pour l'attribut name suivant :

rrreee 🎜L'affectation directe est : _name = @"Jack";, passer self.name = @"Jack" est en fait équivalent à _name = @"Jack". copier ;🎜 🎜 🎜🎜self.name = @"Jack" déclenchera KVO, _name = @"Jack" ne le fera pas🎜 🎜🎜self.name = @"Jack" Vous pouvez effectuer le débogage du point d'arrêt dans la méthode setter, et vous saurez chaque fois qu'une valeur lui est attribuée. 🎜 🎜Un compromis raisonnable consiste donc à utiliser NSString *str = _name lors de la lecture des données et à utiliser self.name = @"Jack" lors de l'attribution de valeurs. 🎜 🎜Une autre chose à noter est que les sous-classes peuvent remplacer les méthodes de définition, et l'utilisation de self.name = @"Jack" peut ne pas être équivalente à _name = @"Jack".copy . 🎜 🎜Je ne comprends pas ce sur quoi vous n'êtes pas clair, je ne peux donc que le décrire brièvement en utilisant mes idées. 🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!