一篇旧帖子解释得很好:为什么我不在 init 方法中使用访问器方法
但我的问题是:
问。如果我没有覆盖目标 C 子类中的访问器方法,那么在 init
中使用是否安全?
通常避免阻止 KVO 机制访问部分初始化或部分释放的对象。对于 Mac OS X 开发尤其如此,其中绑定和 KVO 起着很大的作用,尤其是在应用程序的用户界面中。我不是iPhone开发人员,但如果在iPhone平台上也使用KVO,那么避免在init
和dealloc
方法中使用访问器方法可能就足够了。
KVO 创建类的动态子类,以便它可以轻松监视对属性的更改。
在init
和dealloc
中避免它们很容易。有些人认为,无论Apple的建议如何,在任何地方使用访问器方法都更容易,但惯例是避免将它们用于init
和dealloc
并且遵循约定通常意味着以后即使你没有预料到任何问题,以后的伤害也会减少。
苹果的最佳实践是不要使用 self。 在 init 或 dealloc 方法中的访问器。可能会没事,但基本上苹果不能保证。
If I am not overriding accessor methods in sub class in Objective C, is it safe to use?
答:永远不要用户自我访问器。
从我2 +多年的工作经验下20 +年的苹果开发人员(可可,obj-c),我学到的是相同的。
很多时候,我们的团队被要求删除所有这些,并指导使用其他一些设计模式或方式,即使这是必需的。
如果对象是作为nonatomic
创建的,并且许多线程在同一属性/对象上工作,这可能会给您带来问题。 self.
使您的类/对象绑定。正如您标记ios一样,对于以前版本的ios,这本来可以完成,但是现在ios正在支持kvo,因此您不应该遵循这种方式。