不要在初始化方法和dealloc中使用访问器方法

我正在阅读有关内存管理的内容,他们不建议在初始化方法中使用访问器方法。

问题 :为什么我们不应该在initilizer方法中使用accessor方法

我在stackoverflow和其他网站上搜索关于这个问题的引用的coupe。 不过,我对此并不感到困惑。

任何人都可以在这个问题上给我建议,或者你可以给我一个例子或一个很好的参考,以便我可以自己去做。 谢谢


这是我写的一个例子,它演示了两件事:

  • 初始化如何重新排序
  • 如何引入泄漏
  • 初始化一个属性,点符号

    虽然这个例子着重于初始化,但dealloc很容易遇到类似的问题。 作为一个具体的例子:一个对象可能会在dealloc部分dealloc ,并且引用计数不平衡成为潜在的危险。

    简而言之,您希望关注正确的初始化和清理对象所需的数据 - 而不是通过任何子类来对待对象的行为关注/影响。


    更多阅读:

    为什么myInstance = nil而不是self.myInstance = nil?

    我应该在ARC的init方法中引用self.property吗?

    将保留属性设置为新创建的对象的最佳方法


    KVC观察员监测吸气和吸气方法。 除非你绝对确信没有人会永远观察你的财产,那么你就是在寻求麻烦。 有一个观察者用部分分配的对象进行分散的缺陷是非常难以重现和几乎不可能测试的。


    这对双方的开发者来说都是一个宗教问题,ARC的到来让这个问题更加混乱。

    有几个原因是:

  • 该对象未完全初始化,访问器可能依赖于完全初始化的对象。

  • 访问器可能有副作用,并且对象没有完全初始化。 一个常见的副作用是在首次使用时实例化一个iVar。

  • 这些参数也适用于在dealloc使用访问器(对于非ARC代码)。

    链接地址: http://www.djcxy.com/p/59371.html

    上一篇: Don’t Use Accessor Methods in Initializer Methods and dealloc

    下一篇: Using Alarm Manager Even If App closed?