// main.m
#import <Foundation/Foundation.h>
@interface Test : NSObject
-(void) objectFun;
+(void) classFun;
@end
@implementation Test
-(void) objectFun{}
+(void) classFun{}
@end
int main()
{
BOOL ret;
ret=[Test instancesRespondToSelect or:@selector(objectFun)]; //YES
ret=[Test instancesRespondToSelect or:@selector(classFun)]; //NO
ret=[Test respondsToSelector:@selector(objectFun)]; //NO
ret=[Test respondsToSelector:@selector(classFun)]; //YES
[Test classFun];
//[Test objectFun];//error: Class method '+objectFun' not found
Test* obj =
[[Test alloc] init];
ret=[obj respondsToSelector:@selector(objectFun)]; //YES
ret=[obj respondsToSelector:@selector(classFun)]; //NO
//[obj classFun];//error: Instance method '-classFun' not found
[obj objectFun];
return 0;
}
总结:
1. respondsToSelector既可以检查类(是否响应指定类方法),也可以检查实例(是否响应指定实例方法)
2. instancesRespondToSelect or只能写在类名后面,但检测的是实例(是否响应指定实例方法)
#import <Foundation/Foundation.h>
@interface Test : NSObject
-(void) objectFun;
+(void) classFun;
@end
@implementation Test
-(void) objectFun{}
+(void) classFun{}
@end
int main()
{
BOOL ret;
ret=[Test instancesRespondToSelect
ret=[Test instancesRespondToSelect
ret=[Test respondsToSelector:@selector(objectFun)];
ret=[Test respondsToSelector:@selector(classFun)];
[Test classFun];
//[Test objectFun];//error: Class method '+objectFun' not found
Test* obj
ret=[obj respondsToSelector:@selector(objectFun)];
ret=[obj respondsToSelector:@selector(classFun)];
//[obj classFun];//error: Instance method '-classFun' not found
[obj objectFun];
return 0;
}
总结:
1. respondsToSelector既可以检查类(是否响应指定类方法),也可以检查实例(是否响应指定实例方法)
2. instancesRespondToSelect
可以认为[Test instancesRespondToSelect
原文地址:http://blog.sina.com.cn/s/blog_74bf41030100xtdb.html