选择器(Selector)
OC中使用(selector)和 block(代码块)传递函数
SEL和id以及Class等都是OC里的数据类型,和int、float的地位一样。SEL变量可以存储selector数据。
可以通过@selector来获取某方法的selector。
SEL afun = @selector(someMethodName:::::);
实例对象可以通过performSeletor方法来调用SEL方法。
【特点】
1、是一种数据类型SEL
2、SEL类型的变量用于存放方法的
【使用】
1、创建SEL类型的变量
//定义SEL类型的变量(编译时)
SEL sel = @selector(eat);
//动态的创建SEL变量(运行时)
SEL sel2 = NSSelectorFromString(@"eat");
//在执行时直接创建SEL变量没有警告
[cat performSelector:@selector(eat)];
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
//这样使用会有警告,加上外面语句可以忽略
[cat performSelector:sel2];
#pragma clang diagnostic push
//通过selector调用方法时,若方法没有实现会导致崩溃
2、判断某个类是否实现了selector中的方法
//判断对象所属的类是否实现了selector中的方法
[cat respondsToSelector:sel2]