问题
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?
回答1:
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())
来源:https://stackoverflow.com/questions/10212119/objc-getprotocol-returns-null-for-nsapplicationdelegate