検索

ホームページ  >  に質問  >  本文

ios - 一部の書籍では、初期化メソッドと dealloc メソッドは常にインスタンス変数を介してデータの読み取りと書き込みを行う必要があると記載されているのはなぜですか?

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

我想大声告诉你我想大声告诉你2742日前991

全員に返信(1)返信します

  • 黄舟

    黄舟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"

      setter メソッドでブレークポイントのデバッグを実行でき、すべての割り当てを把握できます。

    NSString *str = _name,赋值用 self.name = @"Jack" したがって、合理的な妥協案の解決策があります。それは、データを読み取るときに NSString *str = _name を使用し、値を割り当てるときに

    を使用することです。

    self.name = @"Jack"可能不等同于 _name = @"Jack".copyもう 1 つ注意すべき点は、サブクラスはセッター メソッドをオーバーライドする可能性があり、

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

    ご不明な点がわからないので、私の考えを使って簡単に説明することしかできません。 🎜

    返事
    0
  • キャンセル返事