检查类方法是否由类实现的最简单方法是什么? 例如,UIFont定义了这个方法: + (UIFont *)preferredFontForTextStyle:(NSString *)style NS_AVAILABLE_IOS(7_0); 我不能使用instancesRespondToSelector:这里,因为pr
例如,UIFont定义了这个方法:
+ (UIFont *)preferredFontForTextStyle:(NSString *)style NS_AVAILABLE_IOS(7_0);
我不能使用instancesRespondToSelector:这里,因为preferredFontForTextStyle:不是实例方法而是类方法.
我看到class_getClassMethod,但是……真的吗? objc / runtime.h?
我用的是:[MyClass respondsToSelector:mySelector]
所有类都是基类的实例.因此,所有NSObject的实例方法也是从NSObject派生的任何类的类方法.
它有一些直观的意义.毕竟,类是对象,所以NSObject的所有方法都适用于类.
如果您对为何更详细地发生这种情况感到好奇,请阅读metaclasses in Objective-C.
[[MyClass class] instancesRespondToSelector:mySelector]不起作用的原因是NSObject actually defines +class
to return self.框架隐藏了元视图,只能通过运行时API访问.