効果的な目標 -c2.0 この本には、初期化メソッドと dealloc メソッドは常にインスタンス変数を介してデータを読み書きする必要があると書かれていますが、長い間読んだ後、理由がわかりませんでした。誰かこの本を読んだことがありますか?
黄舟2017-05-17 10:07:31
この本にはとても明確ではありませんか:
_name = @"Jack"
セッターを介してメッセージを送信せずに、変数に値を直接代入する方が高速です。
次の name
属性の場合:
直接の割り当ては次のとおりです: _name = @"Jack";
,通过 self.name = @"Jack"
其实等同于 _name = @"Jack".copy
;
self.name = @"Jack"
会触发KVO,_name = @"Jack"
はKVOをトリガーしますが、
self.name = @"Jack"
NSString *str = _name
,赋值用 self.name = @"Jack"
したがって、合理的な妥協案の解決策があります。それは、データを読み取るときに NSString *str = _name
を使用し、値を割り当てるときに
self.name = @"Jack"
可能不等同于 _name = @"Jack".copy
もう 1 つ注意すべき点は、サブクラスはセッター メソッドをオーバーライドする可能性があり、
_name = @"Jack".copy
と同等ではない可能性があることです。 ご不明な点がわからないので、私の考えを使って簡単に説明することしかできません。 🎜