objc_getProtocol() returns NULL for `NSApplicationDelegate"?

cocoa, nsapplication, objective-c, objective-c-runtime, protocols

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())

Problem

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?

Original source