当前位置 : 主页 > 手机开发 > ios >

ios – classesRespondToSelector的等价类是什么?

来源:互联网 收集:自由互联 发布时间:2021-06-11
检查类方法是否由类实现的最简单方法是什么? 例如,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访问.

网友评论