要列出Objective-C类的所有实例方法,请使用NSClassFromString("UIView")
来获取该类,然后调用class_copyMethodList
来获取方法的列表。
但是如何获取该类的类方法,而不是实例方法?
答案 0 :(得分:2)
每个Objective-C @implementation
在运行时都由一个对象(“类对象”)表示。类对象管理实例方法的方法字典。
例如,对于UIView
,有一个UIView
类对象。当您调用NSClassFromString(@"UIView")
(或[UIView class]
或[UIView self]
)时,它将返回UIView
类对象。 UIView
类对象管理UIView
实例方法的方法字典。
UIView
类对象本身是另一个类的实例,称为UIView
元类。 UIView
元类由另一个类对象UIView
元类对象表示。 UIView
元类对象管理UIView
类方法的方法字典。
因此,要获取UIView
的类方法列表,您需要将UIView
元类对象传递给class_copyMethodList
。
Class UIView_class = NSClassFromString(@"UIView");
Class UIView_metaclass = object_getClass(UIView_class);
unsigned int count;
Method *classMethods = class_copyMethodList(UIView_metaclass, &count);