唯一真正的原因,我可以想到的是性能和避免未知的副作用的@dynamic设置器。
讨论?
解决方法 它是关于使用惯用一致的代码。如果你适当地模式所有的代码有一组规则,保证在init / dealloc中使用访问器是安全的。最大的问题是(如mmalc所说)的代码设置属性默认状态不应该通过访问器,因为它导致各种各样的讨厌的问题。捕获是没有理由init必须设置属性的默认状态。由于许多原因,我一直在移动到自我初始化的访问器,就像下面的简单例子:
- (NSMutableDictionary *) myMutableDict { if (!myMutableDict) { myMutableDict = [[NSMutableDictionary alloc] init]; } return myMutableDict;}
这种风格的属性初始化允许推迟很多实际上不必要的init代码。在上面的情况下,init不负责启动属性状态,并且它对于在init方法中使用访问器是完全安全的(甚至是必要的)。
不可否认,这会对您的代码施加额外的限制,例如,对超类中的属性的自定义访问器的子类必须调用超类访问器,但这些限制与Cocoa中常见的其他限制不符。
总结以上是内存溢出为你收集整理的objective-c – 为什么我不应该在init/dealloc中使用Objective C 2.0访问器?全部内容,希望文章能够帮你解决objective-c – 为什么我不应该在init/dealloc中使用Objective C 2.0访问器?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)