この問題についてこのサイトでいくつかの質問を読みましたが、次のことを理解しています。
self.property は、手動または @synthesize によって作成された getter/setter メソッドにアクセスします。プロパティが保持、コピーなどとして宣言されているかどうかに応じて、保持カウントが正しく変更されます。たとえば、保持プロパティは、'retain' で新しい値が割り当てられた以前の値を解放し、保持カウントを 1 増やします。
通常、プロパティは同じ名前のインスタンス変数で宣言されます (手動で割り当てを行う場合は異なる可能性があります)。これは一般に、@synthesize によって生成されたアクセサーがインスタンス変数を使用してメモリ内のオブジェクトを参照し、関連するコマンドを実行するためです。
私の質問は、多くの例で、self.property とプロパティが異なるものに同じ意味で使用されており、ルールを決定するのに苦労しているという事実に基づいています。Apple Docs の「Recipes」サンプル アプリの 1 つの例には、次のようなものがあります。
self.navigationItem.title = recipe.name;
nameTextField.text = recipe.name;
overviewTextField.text = recipe.overview;
prepTimeTextField.text = recipe.prepTime;
と...
self.ingredients = sortedIngredients;
これらの各プロパティには、同じ名前のプライベート インスタンス変数が関連付けられています。すべてが「非アトミック、保持」属性を使用して同じ方法で宣言されます。それぞれがdeallocで解放されます...
ただし、'ingredients' は self を介してアクセスされ、'prepTimeTextField' は直接アクセスされます。
アクセス方法の違いの理由は何ですか?
ビューのデリゲートにアクセスしている場合はどうなりますか? または、以前のView Controllerによって保持されたプロパティとしてView Controllerに渡されたコアデータオブジェクトですか?
どうもありがとう