UIWIndow Не объявлено iOS 4.3 AppDelegate - PullRequest
3 голосов
/ 10 июня 2011

Я только что загрузил новейший iOS SDK (4.3) и заметил, что при запуске приложения на основе окон UIWindow не объявляется в заголовочном файле, оно упоминается только как свойство.

#import <UIKit/UIKit.h>

@interface GleekAppDelegate : NSObject <UIApplicationDelegate> {
    IBOutlet UILabel *label;
}

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

@end

Я бы ожидал и помнил из старого SDK, что приведенный выше код должен быть

#import <UIKit/UIKit.h>

@interface GleekAppDelegate : NSObject <UIApplicationDelegate> {
    IBOutlet UILabel *label;

    UIWindow *window;
}

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

@end

Это просто новая функция SDK?

Спасибо

1 Ответ

3 голосов
/ 10 июня 2011

Новая среда выполнения Objective C имеет возможность синтезировать ивары без явного объявления их. От Разница во времени выполнения в языке программирования Objective-C :

В целом поведение свойств идентичен как по современному, так и по наследству время выполнения (см. «Версии времени выполнения и Платформы »в Objective-C Runtime Руководство по программированию). Есть один ключ Разница: современное время выполнения поддерживает синтез переменных экземпляра тогда как устаревшая среда выполнения этого не делает.

...

С современной средой выполнения, если вы этого не сделаете предоставить переменную экземпляра, Компилятор добавляет один для вас.

С Версии и платформы времени выполнения в Objective-C Руководство по программированию времени выполнения :

  • Телефонные приложения и 64-разрядные программы в Mac OS X v10.5 и более поздних версиях используйте современную версию среды выполнения.

  • Другие программы (32-разрядные программы на рабочем столе Mac OS X) используют устаревшее версия среды выполнения.

Также взгляните на эти вопросы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...