не могу найти протокол NSApplicationDelegate - PullRequest
0 голосов
/ 11 сентября 2010

Как я знаю, NSApplicationDelegate доступен в SDK для 10,6

Существует ли какой-либо протокол, аналогичный NSApplicationDelegate для более ранней версии (у меня 10.5.8)?

Спасибо, interdev

1 Ответ

5 голосов
/ 13 сентября 2010

Функционально да. Но формально нет.

Дело в том, что протоколы до Objective-C 2.0 не имели концепции дополнительных методов. Поэтому вместо этого использовалось то, что называется неофициальный протокол . По сути, заголовочные файлы просто добавили категорию к NSObject, как в

@interface NSObject (NSApplicationDelegate)
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
....
@end

Таким образом, компилятор не будет предупреждать вас, когда вы вызываете метод делегата для произвольного объекта. Теперь он оформлен как официальный протокол:

@protocol NSApplicationDelegate
@optional
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
....
@end

При реализации делегата приложения разница будет в 10,5 и до того, как вы получите

@interface YourAppDelegate:NSObject {
...
}
@end

пока у вас будет в 10,6 и позже

@interface YourAppDelegate:NSObject<NSApplicationDelegate> {
...
}
@end

Итак, как вы найдете в документации для NSApplicationDelegate, протокол формализован в 10.6, но не раньше. Тем не менее, функциональность была там с 10.0.

Мир какао меняется довольно быстро, и в документации описывается только самая последняя версия, поэтому я бы порекомендовал вам обновить ее до 10.6, если это возможно. Это сэкономит вам массу часов на расчесывание волос, особенно если вы новичок.

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