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也就是一个整数来查找方法,由于整数的查找和匹配比字符串要快得多,所以这样可以在某种程度上提高执行的效率。

最新文章

  1. 解决UC浏览器或微信浏览器上flex兼容问题
  2. jQuery 基础(4)jQuery 尺寸
  3. silverlight Canvas、StackPanel、Grid三者之间的关系
  4. sqlplus启动后的环境SQLPATH的设置
  5. HTML&CSS----练习隐藏导航栏(三级导航)
  6. Java 语言基础
  7. [译]AMQP 0-9-1 Quick Reference : basic
  8. HDU 5044 TREE
  9. 极端气候频现 五款开发天气预报应用的API
  10. 我的Jekyll博客
  11. Control的Invoke和BeginInvoke详解
  12. the least common multiplier
  13. Java 基础 程序流程控制 (下)
  14. iOS9中关于 NSURLSession/NSURLConnection HTTP load failed 的解决办法
  15. IOS学习[Swift中跳转与传值]
  16. Xpath在选择器中正确,在代码中返回的是空列表问题
  17. python下的socket常用方法举例
  18. 模仿CyclicBarrier,自定义自己屏障类
  19. HDU3625(SummerTrainingDay05-N 第一类斯特林数)
  20. npm、webpack、Gulp 中文教程

热门文章

  1. private、protected、public
  2. linux系统时间同步,硬件时钟和系统时间同步,时区的设置
  3. Quartz实现动态定时任务
  4. 多进程多线程GDB调试 (转)
  5. Accepting PayPal in games(完整的Paypal在Unity的支付)
  6. 《MacTalk·人生元编程》
  7. EasyUI 常规用法
  8. Sequential projection learning for hashing阅读笔记
  9. Asp.Net Core App 部署故障示例 2
  10. 【POJ】【3525】Most Distant Point from the Sea