objc_getProtocol()为`NSApplicationDelegate"返回NULL?

Gre*_*own 5 cocoa protocols objective-c objective-c-runtime nsapplication

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

Protocol *protocol = objc_getProtocol("NSApplicationDelegate");
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,这总是会回归NULL.

其他协议,如NSObject,NSCoding,NSTableViewDelegate,和NSTableViewDataSource做工精细.

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

Gre*_*own 2

在苹果文档中找到了答案:

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

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

  • 被班级采纳,
  • 或者在源代码中的某个地方引用(使用@protocol())