長い間読んですみません。これは私が混乱している本の一部です。
(Xcode 4が採用している)コーディング規約の現在の傾向は、インスタンス変数名の主役としてアンダースコア(_)を使用することです。したがって、Xcodeによって生成された_で始まる変数への参照は、インスタンス変数を名前で直接参照しています。次のような@synthesizeディレクティブが表示された場合
@synthesize window = _window;
_window
に割り当てる代わりに、そもそも@ property / synthesizeで宣言できなかったのはなぜwindow
ですか?
これは、windowという名前のプロパティのゲッターとセッターを合成し、そのプロパティを_windowというインスタンス変数(明示的に宣言する必要はありません)に関連付けることを示しています。これは、インスタンス変数の使用とプロパティを区別し、setterメソッドとgetterメソッドを使用してインスタンス変数の値を設定および取得するように促すのに役立ちます。つまり、このようなものを書く
[ウィンドウmakeKeyAndVisible]; //これは機能しません
windowという名前のインスタンス変数がないため、失敗します。代わりに、インスタンス変数にその名前で直接名前を付ける必要があります。
[_window makeKeyAndVisible];
または、できれば、アクセサーメソッドを使用します。
[self.window makeKeyAndVisible];
self.window
他の方法でアンダースコアが必要ないのはなぜですか?