刘玉刚--AI-技术研究院

Liu Yugang -------AI-Technology Research Institute

OC中的selector浅析之一

选择器实质跟C语言的回调函数是一样的
例如下面一个例子

#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都是一样的。

阅读更多

扫码向博主提问

去开通我的Chat快问

baihuaxiu123

博客专家

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • 机器学习
  • 深度学习 
  • 自然语言处理
  • HTML5
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BaiHuaXiu123/article/details/49908211
文章标签: selector
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!