Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 列出类实例响应的选择器_Objective C_Reflection_Runtime_Selector - Fatal编程技术网

Objective c 列出类实例响应的选择器

Objective c 列出类实例响应的选择器,objective-c,reflection,runtime,selector,Objective C,Reflection,Runtime,Selector,是否可以获取给定类的实例响应的所有选择器的列表?如果选择器未隐藏,则可以键入[instanceName(后面有空格)然后点击ESC。将弹出一个下拉列表,为您提供可见选择器的列表。是。返回已实现方法的列表。可能有更多选择器,实例将使用转发机制响应 class_copyMethodList()只复制在类层次结构的此阶段实现的方法。要获得所有需要迭代超类的方法: Class class = object_getClass( instance ); while( class != Nil ) {

是否可以获取给定类的实例响应的所有选择器的列表?

如果选择器未隐藏,则可以键入
[instanceName
(后面有空格)然后点击
ESC
。将弹出一个下拉列表,为您提供可见选择器的列表。

是。返回已实现方法的列表。可能有更多选择器,实例将使用转发机制响应

class_copyMethodList()只复制在类层次结构的此阶段实现的方法。要获得所有需要迭代超类的方法:

Class class = object_getClass( instance );
while( class != Nil )
{
   // copy method list 
   class = class_getSuperclass( class );
}

请参阅描述[class_copyMethodList][1][1]的stackoverflow文章:严格来说,这不是一个类响应的选择器列表;一个类可以通过其他方式响应,而不是通过实现具有相同名称的方法——通过转发或在运行时解析选择器。没错,这只是一个方法列表。但是,如果一个方法没有响应,则无法找出类实例响应的选择器实现。但在大多数情况下,这与此无关。无论如何,我添加了一个说明。是的;据我所知,您必须获得一个在运行时注册的所有选择器的列表,并询问实例关于其中每一个选择器的信息,而该列表也不是公开的。