0

Xcode 4 で新しいアウトレットを作成すると、通常どおり必要なコードが入力されますが、ヘッダー ファイル インターフェイスで _ のプレフィックスが付けられます (ただし、プロパティではありません)。

UINavigationController *_mainNavController;
UIViewController *_rootView;

実装ファイルでもこれを行います。

@synthesize mainNavController = _mainNavController;
@synthesize rootView = _rootView;

もちろん、接頭辞 _ を付けて使用することもできますが、コードが乱雑になるだけです。私はひどく間違ったことをしていますか?

よろしくお願いします。

4

1 に答える 1

2

もちろん、接頭辞 _ を付けて使用することもできます。

self.mainNavControllerバッキング ivar の代わりにプロパティ ( など) を直接使用しないのはなぜですか?

アクセサー メソッドの使用について Apple が述べていることをお読みください。

退屈でつまらないと思われることもあるかもしれませんが、一貫してアクセサー メソッドを使用すると、メモリ管理で問題が発生する可能性が大幅に減少します。コード全体でインスタンス変数の保持と解放を使用している場合、ほぼ確実に間違ったことをしています。

プロパティはメモリ管理コードをカプセル化し、ボイラープレートを減らします。

インスタンス変数を設定するためにアクセサ メソッドを使用してはならない唯一の場所は、initメソッドと dealloc.

また、バッキング ivar の前に を付ける規則により_、誤ってバッキング ivar に直接アクセスすることを防ぎます (たとえば、オブジェクトの保持に失敗します)。

于 2011-07-04T19:45:13.930 に答える