iOS SEL类型和创建
2024-08-25 18:54:25
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也就是一个整数来查找方法,由于整数的查找和匹配比字符串要快得多,所以这样可以在某种程度上提高执行的效率。
最新文章
- 解决UC浏览器或微信浏览器上flex兼容问题
- jQuery 基础(4)jQuery 尺寸
- silverlight Canvas、StackPanel、Grid三者之间的关系
- sqlplus启动后的环境SQLPATH的设置
- HTML&;CSS----练习隐藏导航栏(三级导航)
- Java 语言基础
- [译]AMQP 0-9-1 Quick Reference : basic
- HDU 5044 TREE
- 极端气候频现 五款开发天气预报应用的API
- 我的Jekyll博客
- Control的Invoke和BeginInvoke详解
- the least common multiplier
- Java 基础 程序流程控制 (下)
- iOS9中关于 NSURLSession/NSURLConnection HTTP load failed 的解决办法
- IOS学习[Swift中跳转与传值]
- Xpath在选择器中正确,在代码中返回的是空列表问题
- python下的socket常用方法举例
- 模仿CyclicBarrier,自定义自己屏障类
- HDU3625(SummerTrainingDay05-N 第一类斯特林数)
- npm、webpack、Gulp 中文教程
热门文章
- private、protected、public
- linux系统时间同步,硬件时钟和系统时间同步,时区的设置
- Quartz实现动态定时任务
- 多进程多线程GDB调试 (转)
- Accepting PayPal in games(完整的Paypal在Unity的支付)
- 《MacTalk·人生元编程》
- EasyUI 常规用法
- Sequential projection learning for hashing阅读笔记
- Asp.Net Core App 部署故障示例 2
- 【POJ】【3525】Most Distant Point from the Sea