objective-c – 为什么我不应该在initdealloc中使用Objective C 2.0访问器?

objective-c – 为什么我不应该在initdealloc中使用Objective C 2.0访问器?,第1张

概述在 @mmalc’s response到 this question,他说“通常你不应该在dealloc(或init)中使用访问器方法。为什么mmalc说这个? 唯一真正的原因,我可以想到的是性能和避免未知的副作用的@dynamic设置器。 讨论? 它是关于使用惯用一致的代码。如果你适当地模式所有的代码有一组规则,保证在init / dealloc中使用访问器是安全的。 最大的问题是(如mmalc 在 @mmalc’s response到 this question,他说“通常你不应该在dealloc(或init)中使用访问器方法。为什么mmalc说这个?

唯一真正的原因,我可以想到的是性能和避免未知的副作用的@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访问器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1046073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存