// main.m
#import <Foundation/Foundation.h>
@interface Test : NSObject
-(v oid) 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
-(v oid) 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