Search code examples
objective-ccocoaprotocolsobjective-c-runtimensapplication

objc_getProtocol() returns NULL for `NSApplicationDelegate"?


I'm trying to use the objc_getProtocol() function to get a reference to the struct representing the NSApplicationDelegate protocol:

Protocol *protocol = objc_getProtocol("NSApplicationDelegate");

However, for some reason, this always returns NULL.

Other protocols such as NSObject, NSCoding, NSTableViewDelegate, and NSTableViewDataSource work fine.

Is there something special about NSApplicationDelegate, or am I doing something wrong?


Solution

  • Found the answer in the Apple docs:

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

    The compiler creates a protocol object for each protocol declaration it encounters, but only if the protocol is also:

    • Adopted by a class,
    • Or referred to somewhere in source code (using @protocol())