美文网首页
instancesRespondToSelector与respo

instancesRespondToSelector与respo

作者: 大辉郞 | 来源:发表于2017-04-24 15:44 被阅读0次

instancesRespondToSelectorrespondToSelector的区别

1. instancesRespondToSelector只能写在类名后面,respondsToSelector可以写在类名和实例名后面。

2.[类instancesRespondToSelector]判断的是该类的实例是否包含某方法,等效于:[该类的实例respondsToSelector]。

3.[类respondsToSelector]用于判断是否包含某个类方法。

举例

.h文件

#import

@interface TestMethod : NSObject

-(void)objectFun;//实例方法

+(void)classFun;//类方法

@end

.m文件

#import "TestMethod.h"

@implementation TestMethod

-(void)objectFun

{

NSLog(@"%s",__FUNCTION__);

}

+(void)classFun

{

NSLog(@"%s",__FUNCTION__);

}

@end

实现

BOOL flag = NO;

flag =[TestMethod instancesRespondToSelector:@selector(objectFun)];//YES类有实例方法

NSLog(@"1=%@",flag?@"yes":@"no");

flag =[TestMethod instancesRespondToSelector:@selector(classFun)];//NO类没有实例方法

NSLog(@"2=%@",flag?@"yes":@"no");

flag =[TestMethod respondsToSelector:@selector(objectFun)];//NO没有这个类方法

NSLog(@"3=%@",flag?@"yes":@"no");

flag =[TestMethod respondsToSelector:@selector(classFun)];//YES有这个类方法

NSLog(@"4=%@",flag?@"yes":@"no");

TestMethod *obj =[[TestMethod alloc]init];

flag =[obj respondsToSelector:@selector(objectFun)];//YES实例有这个实例方法

NSLog(@"5=%@",flag?@"yes":@"no");

flag =[obj respondsToSelector:@selector(classFun)];//NO实例没有这个实例方法

NSLog(@"6=%@",flag?@"yes":@"no");

相关文章

网友评论

      本文标题:instancesRespondToSelector与respo

      本文链接:https://www.haomeiwen.com/subject/ajjpzttx.html