OC_选择器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC_选择器相关的知识,希望对你有一定的参考价值。

选择器

============================================================

认识选择器(Selector)

 

        1.  选择器(SEL)是一个变量类型,SEL 是oc特有的类型

        2.  SEL的变量装消息, 类似于函数指针

 

     Objective-C在编译的时候,会根据方法的名字(包括参数序列),

生成一个用来区分这个方法的唯一的一个ID,这个ID就是SEL类型的。

 

    3. SEL的作用:

从效率的角度上来说,执行的时候不是通过方法名字而是方法ID也就是一个整数来查找方法,

       由于整数的查找和匹配比字符串要快得多,所以这样可以在某种程度上提高执行的效率

  并且增强程序的灵活性

 

 

  4. SEL对象的创建

      @selector      方法选择器

         @selector(xxx) xxx就是方法名

 

通过@selector方法获取

SEL s1 = @selector(compare:);

         //这个方法用于编译时就能确定调用的方法

        

         通过NSSelectorFromString将一个字符串转换为一个SEL类型

SEL s2 = NSSelectorFromString(@“run:”);

        //这个方法用于运行时就能确定调用的方法

 

 

 

  5.  performSelector

      作用:执行SEL

     [dog performSelector:s1];

     [dog performSelector:@selector(setName:) withObject:@"Tom"];

 

          【注】performSelector:最多支持两个参数

 

 

  6.  使用@selector对数组排序

      NSArray数组排序

      sortedArrayUsingSelector:函数

  作用:通过返回值将排序结果告诉用户,{不会修改数组中的元素}

    适用于不能修改的数组

            NSMutableArray数组排序

      sortUsingSelector:函数

      作用:直接对数组内的元素进行排序,{最后结果保存在要排序的数组中}

      适用于可被修改的数组

 

 

 

 

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Warc-performSelector-leaks"

 

//在ARC(自动内存管理)的条件下,使用选择器,很可能会报警

//可照该方式去除报警

 

#pragma clang diagnostic pop

 

以上是关于OC_选择器的主要内容,如果未能解决你的问题,请参考以下文章

flowable设计器自定义自己的人员选择器

jQuery_2_常规选择器1

8_选择器

WEB01_Day05(下)-jQuery选择器

02_jquery_基础选择器

jQuery_第四章_选择器