找不到协议NSApplicationDelegate
问题描述:
据我所知,NSApplicationDelegate
可在SDK 10.6找不到协议NSApplicationDelegate
是否有任何类似的程序NSApplicationDelegate
为ealier版本(我的是10.5.8)?
感谢 InterDev中
答
功能,是的。但是在形式上,没有。
问题是,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。这将为您节省数小时的头发刮擦,特别是如果你是初学者。