码迷,mamicode.com
首页 > 其他好文 > 详细

OC_选择器

时间:2016-03-04 22:11:53      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

选择器

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

认识选择器(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_选择器

标签:

原文地址:http://www.cnblogs.com/yuhanchen/p/5243416.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!