0

通常、次のようなコードがあります

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {

}
@property (nonatomic, retain) IBOutlet UIWindow *window;

@synthesize window;

そしてセカンドバージョンも

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
      UIWindow *_window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;

@synthesize window = _window;

質問は

  • 大きな違いは何ですか?どちらが良いですか?なぜ ?
  • 最初のバージョンでは、 window のデフォルトの属性メンバーは何ですか。2 番目のバージョンでは _window です。その KVC または KVO は内部で機能しますか?
4

1 に答える 1

1

デフォルトのインスタンスでは、次と同じです

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
      UIWindow *window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;

@synthesize window = window;

これは実際には合成時に割り当てを必要としません。おそらくエラーが発生します。

これは私が行う通常の方法です。

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
      UIWindow *window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;

@synthesize window;

インスタンス変数を明示的に宣言します

UIWindow *window;

そこにあることがわかるように(通常、それらは隣同士に並んでいます。)

そして、私はそれらを保持するものと保持しないもので分けます。私の dealloc メソッドでそれらを解放することを知っているように

于 2011-05-03T03:47:00.967 に答える