我已经阅读了谷歌和苹果的代码指南,它们都无需 self 即可访问实例变量。即使它们已经为该实例变量声明了一个属性,但在方法实现内部调用(getter 和 setter)。这就是为什么?
我认为,使用 self.在类的方法实现中调用设置和获取实例变量可以更轻松地管理保留计数。
在类中使用 getter 和 setter 是否有任何警告?
最佳答案
这要看情况。您应该始终在正常使用中使用访问器。
但是对于 init 和 dealloc 方法,您应该使用直接 ivars 来释放和设置变量。这是因为 setter 可能会产生副作用,这些副作用在类初始化或释放期间不好触发。
实际上,使用访问器作为 init 的一部分可能不会导致问题。但我见过许多现实世界的崩溃,其中自定义 setter 不期望为零,因此在 dealloc 中使用访问器会导致应用程序崩溃。即使它没有崩溃,它也可能会做很多毫无意义的工作,因为类即将消亡。
关于iphone - 为什么不使用 self 。类内调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734656/