OC中的selector浅析之一
2015-11-18 15:49
183 查看
选择器实质跟C语言的回调函数是一样的
例如下面一个例子
打印结果:
selector可以叫做选择器,其实指的就是对象的方法,也可以理解为C语言里面的函数指针,在面向对象里面的对应概念。
@selector(xxxx)的作用是找到名字为xxxx的方法。一般用于[a performSelector:@selector(b)];就是说去调用a对象的b方法,和[a b];的意思一样,但是这样更加动态一些。@selector(xxxx)返回的类型是SEL,看方法说明的时候如果参数类型是SEL,那么就是要接受@selector(xxxx)返回的值的那种了。
在Objc中 SEL的定义是:
typedef struct objc_selector *SEL;
具体这objc_selector结构体是什么取决与使用GNU的还是Apple的运行时, 在Mac OS X中SEL其实被映射为一个C字符串,可以看作是方法的名字,它并不一个指向具体方法实现(IMP类型才是)。对于所有的类,只要方法名是相同的,产生的selector都是一样的。
例如下面一个例子
#import "Sum.h" @implementation Sum -(void)run{ [self performSelector:@selector(sum:)]; } -(void)sum:(NSString *)a{ NSLog(@"你好"); } @end
打印结果:
selector可以叫做选择器,其实指的就是对象的方法,也可以理解为C语言里面的函数指针,在面向对象里面的对应概念。
@selector(xxxx)的作用是找到名字为xxxx的方法。一般用于[a performSelector:@selector(b)];就是说去调用a对象的b方法,和[a b];的意思一样,但是这样更加动态一些。@selector(xxxx)返回的类型是SEL,看方法说明的时候如果参数类型是SEL,那么就是要接受@selector(xxxx)返回的值的那种了。
在Objc中 SEL的定义是:
typedef struct objc_selector *SEL;
具体这objc_selector结构体是什么取决与使用GNU的还是Apple的运行时, 在Mac OS X中SEL其实被映射为一个C字符串,可以看作是方法的名字,它并不一个指向具体方法实现(IMP类型才是)。对于所有的类,只要方法名是相同的,产生的selector都是一样的。
相关文章推荐
- 二分搜索的拓展用法
- 遍历Map的四种方法
- 前端图片延迟加载详细讲解
- Android中ActivityManager的使用案例
- percona-toolkit对MySQL的复制和监控类操作教程
- 服务器端二次开发标准事务保存数据
- Java中获取文件大小的正确方法
- WAS类加载异常分析
- web项目遇到classnotfound错误的解决
- Android中的Handler的具体用法
- css3学习过程中导航条的制作笔记
- ios app 实现热更新(无需发新版本实现app添加新功能)
- 实验三 网际协议IP 实验报告
- struts学习
- iOS框架结构
- 简述结构化查询语言的分类
- hadoop基础学习1
- robot operating system概述
- 信号完整性(2)——信号完整性概述
- Dijkstra算法 初探