Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c objc_getProtocol()为'nsApplicationedLegate'返回NULL;?_Objective C_Cocoa_Protocols_Objective C Runtime_Nsapplication - Fatal编程技术网

Objective c objc_getProtocol()为'nsApplicationedLegate'返回NULL;?

Objective c objc_getProtocol()为'nsApplicationedLegate'返回NULL;?,objective-c,cocoa,protocols,objective-c-runtime,nsapplication,Objective C,Cocoa,Protocols,Objective C Runtime,Nsapplication,我试图使用objc_getProtocol()函数获取对表示nsapplicationelegate协议的结构的引用: Protocol *protocol = objc_getProtocol("NSApplicationDelegate"); 但是,由于某些原因,它总是返回NULL 其他协议,如NSObject、NSCoding、NSTableViewDelegate和NSTableViewDataSource工作正常 nsapplicationelegate有什么特别之处吗,或者我做错了

我试图使用
objc_getProtocol()
函数获取对表示
nsapplicationelegate
协议的结构的引用:

Protocol *protocol = objc_getProtocol("NSApplicationDelegate");
但是,由于某些原因,它总是返回
NULL

其他协议,如
NSObject
NSCoding
NSTableViewDelegate
NSTableViewDataSource
工作正常


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

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

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

  • 被一个班级领养
  • 或者在源代码中的某个地方引用(使用 @协议())

是mac应用程序吗?如果是,请添加该标签!因为我在iOS中找不到NapplicationLegate(这里我们是hv UIApplicationLegate)应用程序。!?如果我错了,请纠正我。!是的,它是一个Mac应用程序(因此是AppKit标记)。您可以使用
@protocol(nsApplicationedLegate)
来获得它。那么_-NSApplicationLightLaunchDelegate呢?不幸的是,我需要使用objc_-getProtocol(),因为我直到运行时才知道协议名称(我只是在示例中硬编码了字符串)。