Objective c objc_getProtocol()为'nsApplicationedLegate'返回NULL;?
我试图使用Objective c objc_getProtocol()为'nsApplicationedLegate'返回NULL;?,objective-c,cocoa,protocols,objective-c-runtime,nsapplication,Objective C,Cocoa,Protocols,Objective C Runtime,Nsapplication,我试图使用objc_getProtocol()函数获取对表示nsapplicationelegate协议的结构的引用: Protocol *protocol = objc_getProtocol("NSApplicationDelegate"); 但是,由于某些原因,它总是返回NULL 其他协议,如NSObject、NSCoding、NSTableViewDelegate和NSTableViewDataSource工作正常 nsapplicationelegate有什么特别之处吗,或者我做错了
objc_getProtocol()
函数获取对表示nsapplicationelegate
协议的结构的引用:
Protocol *protocol = objc_getProtocol("NSApplicationDelegate");
但是,由于某些原因,它总是返回NULL
其他协议,如NSObject
、NSCoding
、NSTableViewDelegate
和NSTableViewDataSource
工作正常
nsapplicationelegate
有什么特别之处吗,或者我做错了什么吗?在苹果文档中找到了答案:
编译器会为遇到的每个协议声明创建一个协议对象,但前提是该协议也:
- 被一个班级领养
- 或者在源代码中的某个地方引用(使用 @协议())
@protocol(nsApplicationedLegate)
来获得它。那么_-NSApplicationLightLaunchDelegate呢?不幸的是,我需要使用objc_-getProtocol(),因为我直到运行时才知道协议名称(我只是在示例中硬编码了字符串)。