• iOS SEL类型和创建


    SEL selAction =NSSelectorFromString([actionArrayobjectAtIndex:indexArray]);

     [item addTarget:self action:selAction];

    Objective-C在编译的时候,会根据方法的名字(包括参数序列),生成一个用 来区分这个方法的唯一的一个ID,这个ID就是SEL类型的。我们需要注意的是,只要方法的名字(包括参数序列)相同,那么它们的ID都是相同的。就是 说,不管是超类还是子类,不管是有没有超类和子类的关系,只要名字相同那么ID就是一样的。

    我们可以方便的通过方法的名字,获取到方法的ID也就是我们所说的SEL,反之亦然。具体的使用方法如下: 
    1     SEL 变量名 = @selector(方法名字); 
    2     SEL 变量名 = NSSelectorFromString(方法名字的字符串); 
    3     NSString *变量名 = NSStringFromSelector(SEL参数); 

    这样的机制大大的增加了我们的程序的灵活性,我们可以通过给一个方法传递SEL参数,让这个方法动态的执行某一个方法;我们也可以通过配置文件指定需要执行的方法,程序读取配置文件之后把方法的字符串翻译成为SEL变量然后给相应的对象发送这个消息。
      从效率的角度上来说,执行的时候不是通过方法名字而是方法ID也就是一个整数来查找方法,由于整数的查找和匹配比字符串要快得多,所以这样可以在某种程度上提高执行的效率。

  • 相关阅读:
    冒泡排序
    希尔排序
    现实中遇到的业务状况记录
    OneZero第二周第二次站立会议(2016.3.29)
    OneZero第二周第一次站立会议(2016.3.28)
    OneZero第五次站立会议(2016.3.25)
    OneZero第四次站立会议(2016.3.24)
    PSP(3.16——3.22)以及周记录
    OneZero第三次站立会议(2016.3.23)
    读“软工实践总结作业”有感
  • 原文地址:https://www.cnblogs.com/cocoajin/p/3249824.html
Copyright © 2020-2023  润新知