ios - 一部の書籍では、初期化メソッドと dealloc メソッドは常にインスタンス変数を介してデータの読み取りと書き込みを行う必要があると記載されているのはなぜですか?
我想大声告诉你
我想大声告诉你 2017-05-17 10:05:31
0
1
990

効果的な目標 -c2.0 この本には、初期化メソッドと dealloc メソッドは常にインスタンス変数を介してデータを読み書きする必要があると書かれていますが、長い間読んだ後、理由がわかりませんでした。誰かこの本を読んだことがありますか?

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

全員に返信(1)
黄舟

この本にはとても明確ではありませんか:

  • _name = @"Jack" セッターを介してメッセージを送信せずに、変数に値を直接代入する方が高速です。

  • 次の 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もう 1 つ注意すべき点は、サブクラスはセッター メソッドをオーバーライドする可能性があり、

の使用は _name = @"Jack".copy と同等ではない可能性があることです。

ご不明な点がわからないので、私の考えを使って簡単に説明することしかできません。 🎜
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート