据我所知,SDK {10}中提供了NSApplicationDelegate
是否有与NSApplicationDelegate
类似的协议用于ealier版本(我的是10.5.8)?
感谢 InterDev中
答案 0 :(得分:5)
功能上,是的。但正式而言,没有。
关键是,Objective-C 2.0之前的协议没有可选方法的概念。因此,使用了一种名为informal protocol的东西。基本上,头文件只是将一个类别添加到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
因此,正如您在documentation for NSApplicationDelegate
中发现的那样,协议在10.6中正式化,但之前没有形式化。但是,自10.0以来,功能一直存在。
Cocoa世界变化很快,文档往往只描述最新版本,所以如果可能,我建议你升级到10.6。这样可以节省大量的毛发刮伤时间,特别是如果你是初学者的话。