重複の可能性:
cocoa object-c クラスの変数の前にあるアンダースコアはどのように機能しますか?
Objective C でプロパティ名の前にアンダースコアを付ける
プロパティを宣言して合成すると、たとえば次のようになります。したがって、_name は、次の実装で使用する name プロパティのインスタンス変数です。私の質問は、なぜこの ivar が必要なのか、_name ivar を作成しなかった場合はどうなるのかということです。ありがとうございました。
重複の可能性:
cocoa object-c クラスの変数の前にあるアンダースコアはどのように機能しますか?
Objective C でプロパティ名の前にアンダースコアを付ける
プロパティを宣言して合成すると、たとえば次のようになります。したがって、_name は、次の実装で使用する name プロパティのインスタンス変数です。私の質問は、なぜこの ivar が必要なのか、_name ivar を作成しなかった場合はどうなるのかということです。ありがとうございました。
私の理解では、プロパティ名と同じデフォルトのivar名があるということです。アンダースコアを使用して独自のものを指定する理由の 1 つは、setter のあいまいさを排除することです。
-(void) setFoo:(id) foo {
// here, foo should ONLY refer to the passed-in var
// If your ivar is the same, it is ambiguous.
// If your ivar is _foo, then there is clarity.
}