ios - 為什麼有的書說在初始化方法和dealloc方法總是應該透過實例變數來讀取和寫入資料?
我想大声告诉你
我想大声告诉你 2017-05-17 10:05:31
0
1
1019

Effiective objecttive -c2.0 這本書說 在初始化方法和dealloc方法總是應該透過實例變數來讀取數據,看了半天沒看懂原因到底是為什麼?有看這本書的嗎?

我想大声告诉你
我想大声告诉你

全部回覆(1)
黄舟

書中不是講的很清楚嗎:

  • _name = @"Jack" 不經過setter的訊息發送,直接為變數賦值,速度快。

  • 對於以下的 name 屬性:

@property (nonatomic, copy) NSString *name;

直接賦值是: _name = @"Jack"; ,通过 self.name = @"Jack" 其实等同于 _name = @"Jack".copy;

  • self.name = @"Jack" 会触发KVO,_name = @"Jack" 會觸發KVO,

    不會
  • self.name = @"Jack"

    可以在 setter 方法中進行斷點調試,每次賦值你都知道。

NSString *str = _name,赋值用 self.name = @"Jack"所以有合理折中方案就是,讀取資料的時候用 NSString *str = _name,賦值用

self.name = @"Jack"可能不等同于 _name = @"Jack".copy另外要注意的是子類別可能會複寫setter方法,用

可能不等同於 _name = @"Jack".copy

沒有明白你哪裡不清楚,只能用我的思路簡單描述一下。 🎜
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板