【iOS开发】SEL和Selector 原理小结

来源:互联网 发布:海伦凯勒商城源码 编辑:程序博客网 时间:2024/05/18 02:12

一 、Selector(选择器)简介

选择器是用来选择一个方法来为一个对象 执行的名称,或是在编译源代码时替换该名称的 唯一标识符的名称。一个选择器本身不做任何事情。它简单地识别了一种方法。唯一使选择器的方法名称不同于普通字符串,编译器确保选择器是独特的。使一个选择器有用的是(在运行时)它就像一个 动态函数指针,对于一个给定的名称,自动指向一个方法的实现,适用于任何一个它所使用的类。

假设你有一个run方法选择器和类Dog、Student。选择器可以使用每一个类的一个实例来调用它的运行方法,即使每个类的实现可能是不同的。

二、获取一个Selector

编译的选择器的类型是SEL。有两种常见的方法来获得选择器:

(1)编译时,通过编译器指令 @selector 来获取.

SEL aSelector = @selector(methodName);

(2)运行时,通过字符串来获取一个方法名 NSSelectorFromString

SEL aSelector = NSSelectorFromString(@”methodName”);

三、使用Selector

使用已经创建好的Selector。你可以通过 performSelector : 来调用某个方法。

// 创建一个run方法选择器
SEL aSelector = @selector(run);

// 通过 performSelector: 来调用对象的 run 方法
[aDog performSelector:aSelector];
[anStudent performSelector:aSelector];

注:一般在特殊的情况下才会自己创建选择器,比如当你要将某个按钮的点击事件暴露给外面的类来实现其点击方法的时候,- (void)addTarget:(id)target action:(SEL)action;,这时候就会用到@Selector。

1 0