为什么不使用自我。在课堂内打电话

时间:2011-10-12 02:35:20

标签: iphone ios memory-management

我已经阅读了谷歌和苹果的代码指南,他们都没有自己访问实例变量。在方法实现中调用(getter和setter),即使它们已经为该实例变量声明了一个属性。这就是为什么?

在我看来,使用自我。在类的方法实现中调用set和get实例变量使管理器更容易保留计数。

在课堂内使用getter和setter是否有任何警告?

1 个答案:

答案 0 :(得分:1)

这取决于。您应该始终在正常使用中使用访问者。

但是对于init和dealloc方法,您应该使用direct ivars来释放和设置变量。那是因为setter可能有副作用,在类初始化或释放期间不能触发。

实际上,使用访问器作为init的一部分可能不会导致问题。但是我看到了许多真实世界的崩溃,其中自定义setter并不期望nil,因此在dealloc中使用访问器会使应用程序崩溃。即使它没有崩溃,它也可能会做很多毫无意义的工作,因为课程即将死亡。