美文网首页
《Effective Objective-C 2.0 》 阅读笔

《Effective Objective-C 2.0 》 阅读笔

作者: dibadalu | 来源:发表于2016-03-06 16:09 被阅读57次

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

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

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

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

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

要点

  • 在对象内部读取数据时,应该直接通过实例变量来读,而写入数据时,则应通过属性来写。
  • 初始化方法dealloc方法中,总是应该直接通过实例变量来读写数据。
  • 有时会使用延迟初始化技术配置某份数据,这种情况下,需要通过属性(获取方法)来读取数据。

相关文章

网友评论

      本文标题:《Effective Objective-C 2.0 》 阅读笔

      本文链接:https://www.haomeiwen.com/subject/dysakttx.html