《Effective Objective-C 2.0 》 阅读笔记 item7

第7条:在对象内部尽量直接访问实例变量

在对象之外访问实例变量时,总是应该通过属性来做,。然而在对象内部访问实例变量的时候,建议:在读取实例变量的时候采用直接访问的形式,而在设置实例变量的时候通过属性(设置方法)来做。这种方案既能提高读取操作的速度,又能控制对属性的写入操作。

*** 该注意的地方 ***

  • 一般情况下,在初始化方法中总是应该直接访问实例变量,因为子类可能会“覆盖”(override)设置方法。
  • 在某些特殊情况下,又必须在初始化方法中调用设置方法:如果待初始化的实例变量声明在超类中,而又无法在子类中直接访问此实例变量的话,那么就需要调用“设置方法”了。
  • 在使用了“延迟初始化”的情况下,必须通过“获取方法”来访问属性,否则,实例变量就永远不会初始化。
// 在“获取方法”中对实例变量执行延迟初始化
- (EOCBrain*)brain{
    if(!_brain){
        _brain = [Brain new];
    }
    return _brain;
}

若没有调用“获取方法”就直接访问实例变量,则会看到尚未设置好的brain。

要点

  • 在对象内部读取数据时,应该直接通过实例变量来读,而写入数据时,则应通过属性来写。
  • 初始化方法dealloc方法中,总是应该直接通过实例变量来读写数据。
  • 有时会使用延迟初始化技术配置某份数据,这种情况下,需要通过属性(获取方法)来读取数据。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容