iphone - 为什么不使用 self 。类内调用

标签 iphone ios memory-management

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

我认为,使用 self.在类的方法实现中调用设置和获取实例变量可以更轻松地管理保留计数。

在类中使用 getter 和 setter 是否有任何警告?

最佳答案

这要看情况。您应该始终在正常使用中使用访问器。

但是对于 init 和 dealloc 方法,您应该使用直接 ivars 来释放和设置变量。这是因为 setter 可能会产生副作用,这些副作用在类初始化或释放期间不好触发。

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

关于iphone - 为什么不使用 self 。类内调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734656/

相关文章:

c# - 带有计时器的简单应用程序正在消耗内存?

java - 为什么必须对超出范围的 java.awt.Window 进行 dispose()?

iphone - iOS UILabel View 更新有延迟,即使控制台立即显示输出

iphone - 即使在后台,如何让 AVAudioPlayer 在 30 分钟后停止播放背景音乐?

iphone - self 和 super 的区别

ios - 在 uitableviewcell 中自定义 uipickerview

ios - 如何扩展为高度为 2 :1? 的标签

c - 交换矩阵的行后出现 double free() 错误

iphone - 如何浏览 iPhone 图片库中的图片?

ios - 使用 Firebase 和 OneSignal 推送通知