objc_getProtocol()为`NSApplicationDelegate“返回NULL?

时间:2012-04-18 14:56:26

标签: objective-c cocoa protocols objective-c-runtime nsapplication

我正在尝试使用objc_getProtocol()函数来获取对表示NSApplicationDelegate协议的结构的引用:

Protocol *protocol = objc_getProtocol("NSApplicationDelegate");

但是,出于某种原因,这总是返回NULL

NSObjectNSCodingNSTableViewDelegateNSTableViewDataSource等其他协议正常运行。

NSApplicationDelegate有什么特别之处,或者我做错了什么?

1 个答案:

答案 0 :(得分:3)

在Apple文档中找到答案:

http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html#//apple_ref/doc/uid/TP30001163-CH15

编译器为遇到的每个协议声明创建一个协议对象,但前提是该协议也是:

  • 由班级采纳
  • 或者在源代码的某处提到(使用 @protocol())