如何测试Objective-C类以确定它是否响应静态选择器(类方法)?
发布时间:2020-12-16 09:44:04 所属栏目:百科 来源:网络整理
导读:用一个简单的例子可以很容易地解释这一点.假设我有以下协议和类定义: @protocol ProtocolA NSObject@optional+ (BOOL)methodA;@end@interface ClassA : NSObject ProtocolA@end ClassA可能定义也可能不定义methodA.如果我正在使用ClassA实例和实例方法,我可
用一个简单的例子可以很容易地解释这一点.假设我有以下协议和类定义:
@protocol ProtocolA <NSObject> @optional + (BOOL)methodA; @end @interface ClassA : NSObject <ProtocolA> @end ClassA可能定义也可能不定义methodA.如果我正在使用ClassA实例和实例方法,我可以使用respondsToSelector:来测试实例.然而,在这种情况下,我想不出任何干净的方法来确定ClassA是否定义(响应)methodA. 编辑: Class <ProtocolA> classRef = [ClassA class]; if([classRef respondsToSelector:@selector(methodA)]) {} 上面的代码抛出以下警告: 我刚刚注意到,如果我明确地将classRef强制转换为(Class),那么警告就会消失.我仍觉得奇怪. 解决方法
[[instance class] respondsToSelector:@selector(methodA)]
类的每个实例都有一个指向它的类对象的指针,可以通过调用类来检索它.可以使用respondsToSelector探测此对象(类是Objective C中的对象):就像任何其他对象一样. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |