7、在对象内部尽量直接访问实例变量
建议:读取变量时用直接访问实例变量的形式,设置变量时通过属性来做。
两种写法的区别:
直接访问,由于没经过OC的“方法派发”(method dispatch)步骤,所以速度比较快。其编译所生成的代码会直接访问保存对象实例变量的那块内存
直接访问,不会调用
setter方法,绕过了为相关属性定义的“内存管理语义”。(如:ARC下直接访问一个copy属性,不会拷贝该属性,只会保留新值并释放旧值)直接访问,不会出访“键值观测”(KVO)通知,这样做是否有问题,还取决于具体的对象行为
通过属性访问,有助于排查与之相关的错误,因为可以在
setter或getter中新增“断点”(breakpoint),监控该属性调用者及其访问时机
要点:
在对象内部读取数据时,应该直接通过实例变量来读,而写入数据时,则应该通过属性来写
在初始化方法及
dealloc方法中,总是应该直接通过实例变量来读写数据有时会使用惰性初始化技术配置某份数据,此时需要通过属性来读取数据
Last updated
Was this helpful?