如果我没有覆盖目标 C 子类中的访问器方法,那么使用起来是否安全



一篇旧帖子解释得很好:为什么我不在 init 方法中使用访问器方法

但我的问题是:

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

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

KVO 创建类的动态子类,以便它可以轻松监视对属性的更改。

initdealloc中避免它们很容易。有些人认为,无论Apple的建议如何,在任何地方使用访问器方法都更容易,但惯例是避免将它们用于initdealloc并且遵循约定通常意味着以后即使你没有预料到任何问题,以后的伤害也会减少。

苹果的最佳实践是不要使用 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,因此您不应该遵循这种方式。

最新更新