Вопрос о @property и @synthesize - PullRequest
0 голосов
/ 03 мая 2011

Обычно у нас есть такие коды

@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 во второй версии. Это KVC или KVO работает внутри?

1 Ответ

1 голос
/ 03 мая 2011

в экземпляре по умолчанию совпадает с

@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

...