为什么我应该直接从初始化方法中访问实例变量?

NOr*_*der 5 objective-c ios

使用Objective-C文档的Apple Programming声明:

您应该始终直接从初始化方法中访问实例变量,因为在设置属性时,对象的其余部分可能尚未完全初始化.即使您不提供自定义访问器方法或从您自己的类中知道任何副作用,未来的子类也可以很好地覆盖该行为.

但是我不知道setter方法会有什么副作用,请举个例子来解释为什么我必须直接从初始化方法中访问实例变量

Jac*_*kin 3

如果 setter 方法被子类重写,则无法保证实例变量将包含正确的数据。如果您想在初始化等关键阶段保持对象内的数据完整性,您应该按照 Apple 的建议进行操作。