iOS SEL类型
2014-02-11 09:38
218 查看
Objective-C在编译的时候,会根据方法的名字(包括参数序列),生成一个用 来区分这个方法的唯一的一个ID,这个ID就是SEL类型的。我们需要注意的是,只要方法的名字(包括参数序列)相同,那么它们的ID都是相同的。就是 说,不管是超类还是子类,不管是有没有超类和子类的关系,只要名字相同那么ID就是一样的。
我们可以方便的通过方法的名字,获取到方法的ID也就是我们所说的SEL,反之亦然。具体的使用方法如下:
1 SEL 方法id = @selector(方法名字:);
2 SEL 方法id = NSSelectorFromString(方法名字的字符串);
3 NSString *方法名 = NSStringFromSelector(SEL参数);
这样的机制大大的增加了我们的程序的灵活性,我们可以通过给一个方法传递SEL参数,让这个方法动态的执行某一个方法;我们也可以通过配置文件指定需要执行的方法,程序读取配置文件之后把方法的字符串翻译成为SEL变量然后给相应的对象发送这个消息。
从效率的角度上来说,执行的时候不是通过方法名字而是方法ID也就是一个整数来查找方法,由于整数的查找和匹配比字符串要快得多,所以这样可以在某种程度上提高执行的效率。
我们可以方便的通过方法的名字,获取到方法的ID也就是我们所说的SEL,反之亦然。具体的使用方法如下:
1 SEL 方法id = @selector(方法名字:);
2 SEL 方法id = NSSelectorFromString(方法名字的字符串);
3 NSString *方法名 = NSStringFromSelector(SEL参数);
这样的机制大大的增加了我们的程序的灵活性,我们可以通过给一个方法传递SEL参数,让这个方法动态的执行某一个方法;我们也可以通过配置文件指定需要执行的方法,程序读取配置文件之后把方法的字符串翻译成为SEL变量然后给相应的对象发送这个消息。
从效率的角度上来说,执行的时候不是通过方法名字而是方法ID也就是一个整数来查找方法,由于整数的查找和匹配比字符串要快得多,所以这样可以在某种程度上提高执行的效率。
相关文章推荐
- iOS Instrument各列是代表意思
- ios5 json
- ios Map 开发笔记 四 导航画线
- ios中如何计算(页数,行数,等等的算法)
- IOS中 如何去除Tabview里面cell之间的下划线
- iOS delegate的经典应用案例
- AudioSystem类
- iOS项目的目录结构和开发流程
- iOS项目的目录结构和开发流程
- 【iOS练习】秒表练习
- IOS应用开发21种设计模式-中介者模式
- iOS KVO & KVC
- iOS开发-xcode5启动画面
- 粗糙的iOS笔记之一应用生命周期
- iOS开发-ios7下拉刷新,上提加载快速集成
- IOS开发 使用地图 MapKit
- iOS7中 navigationItem的左、右barButton 各向右、左偏离10个像素 (纠正方法}
- iOS左右菜单PPRevealSideviewController
- iOS界面-抽屉式交互
- iOS 设计模式之工厂模式