今天说一下oc中一个重要的东西,就是oc中的选择器,选择器是用来选取我们的方法的,有点类似于函数指针,SEL变量是用来装消息的。
SEL创建
//用关键字selector来指向方法体
SEL sel = @selector(crash);
//用SEL来调用我们的方法
[man performSelector:sel];
//带参数的方法调用
[man performSelector:@selector(setName:) withObject:@"Tom"];
在ARC模式下使用SEL通常会有警告显示,此时可以使用以下代码去除警告
//在ARC(自动内存管理)的条件下,使用选择器,很可能会报警
//可照如下方式去除报警
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
/*调用方法写这里*/
#pragma clang diagnostic pop
有时候我们使用方法的时候是需要在程序运行的时候来确定我们具体需要调用哪个方法的。此时我们可以使用如下的方法:
SEL sel = @selector(run);
//这个方法用于编译时就能确定调用的方法
SEL sel = NSSelectorFromString(@"run");
//这个方法用于运行时确定调用的方法
练习 给可变数组添加方法,可以添加任何对象,按照对象的某一个属性,排序