Test1.h
@interface Test1 : NSObject - (void)objectFun; + (void)classFun; @end
Test1.m
@implementation Test1 - (void)objectFun { NSLog(@"object function"); } + (void)classFun { NSLog(@"class function"); } @end
測試類:
BOOL flag; flag = [Test1 instancesRespondToSelector:@selector(objectFun)]; //YES flag = [Test1 instancesRespondToSelector:@selector(classFun)]; //NO flag = [Test1 respondsToSelector:@selector(objectFun)]; //NO flag = [Test1 respondsToSelector:@selector(classFun)]; //YES Test1 *obj = [[Test1 alloc] init]; flag = [obj respondsToSelector:@selector(objectFun)]; //YES flag = [obj respondsToSelector:@selector(classFun)]; //NO
總結:
1. instancesRespondToSelector只能寫在類名后面,respondsToSelector可以寫在類名和實例名后面。
2. [類 instancesRespondToSelector]判斷的是該類的實例是否包含某方法,等效於:[該類的實例 respondsToSelector]。
3. [類 respondsToSelector]用於判斷是否包含某個類方法。