0

一篇旧帖子解释得很好:Why shoudn't I use accessor methods in init methods

但我的问题是:

问:如果我没有在 Objective C 的子类中覆盖访问器方法,那么在 中使用是否安全init

4

3 回答 3

0

Apple 的最佳实践说不要使用 self. 在 init 或 dealloc 方法中的访问器。它可能会很好,但基本上Apple无法保证。

于 2012-12-09T03:41:38.400 回答
0

If I am not overriding accessor methods in sub class in Objective C, is it safe to use?

答:永远不要使用 self.accessor。

从我在 20 年以上的苹果开发人员(可可、obj-c)下的 2 年以上工作经验中,我学到的东西是一样的。

很多时候,我们的团队被要求删除所有这些,并被指导使用其他一些设计模式或方式,即使它是必需的。

如果对象被创建为nonatomic,并且许多线程在同一个属性/对象上工作,这可能会给您带来问题。self.使您的类/对象绑定。正如您已标记 ios,对于以前的 ios 版本,这可能已经完成,但现在 ios 支持 kvo,所以您不应该遵循这种方式。

于 2012-12-09T04:10:53.073 回答
0

通常避免阻止 KVO 机制访问部分初始化或部分释放的对象。对于 Mac OS X 开发尤其如此,其中绑定和 KVO 发挥了很大作用,尤其是在应用程序的用户界面中。我不是 iPhone 开发人员,但如果 iPhone 平台上也使用了 KVO,那么避免在你的initanddealloc方法中使用访问器方法可能就足够了。

KVO 为您的类创建一个动态子类,以便它可以轻松监控属性的更改。

init在和中避免它们很容易dealloc。一些人认为,无论 Apple 的建议如何,在任何地方都使用访问器方法更容易,但惯例是避免使用它们,init并且dealloc遵循惯例通常意味着以后伤害更小,即使您现在没有预料到任何问题。

于 2012-12-09T03:44:43.130 回答