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?
Found the answer in the Apple docs:
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())
来源:https://stackoverflow.com/questions/10212119/objc-getprotocol-returns-null-for-nsapplicationdelegate