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