博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS选择器(selector)
阅读量:5885 次
发布时间:2019-06-19

本文共 1361 字,大约阅读时间需要 4 分钟。

前言

今天写异型进度条的时候用到了定时器NSTimer,其中定时器的启动是这么写的:

1 _timer = [NSTimer scheduledTimerWithTimeInterval:0.12                                               target:self3                                             selector:@selector(circleAnimationTypeOne)4                                             userInfo:nil5                                              repeats:YES];

其中各个参数含义不难理解,但是selector这种标识第一次见到,今天的主题就是对selector的学习

详述

Selector是一个对象中用来选择方法来执行的名字,或者是当源代码编译时候用来替换名字的唯一的标示。Selector自己并不能做任何事情。它简单的标示了一个方法。使得selector方法名称不同于普通字符串的唯一的事情是编译器确定selectors是独特的。使得selector有用的是(与运行时结合)它扮演着类似于一个动态函数指针,对于一个已经给与的名字,自动指向类所使用的适用的方法的实现。假设我们有一个run方法的selector,并且类Dog,Athlete和ComputerSimulation(每个类都实现了run方法)。Selector能够被每一个类的实例所使用并且调用它的run方法--设置方法的实现可能是互不相同的。

如何取得SELECTOR

被编译的selectors是SEL类型的。有两种方式获得selector:

·在编译期,我们使用编译标示@selector

 1 SEL aSelector = @selector(methodName); 

·在运行时,我们使用NSSelectorFromString方法,字符串是方法名:

 1 SEL aSelector = NSSelectorFromString(@"methodName"); 

当我们想要我们的代码发送一个知道运行时我们才知道名字的消息的时候,我们使用selector创建一个字符串。

如何使用SELECTOR

我们能够调用以selector为参数的performSelector:的方法并且其他类似的方法来使用:

1 SEL aSelector = @selector(run);2 [aDog performSelector:aSelector];3 [anAthlete performSelector:aSelector];4 [aComputerSimulation performSelector:aSelector];

 

(我们使用这个技术在特殊的情况下,例如我们实现了一个使用target-action设计模式的对象。通常,我们直接的简单的调用该方法。)

 

转载于:https://www.cnblogs.com/JoJosBizarreAdventure/p/4566542.html

你可能感兴趣的文章
在ubuntu下安装和配置vsftpd
查看>>
c#中结构体和类的比较
查看>>
Linux磁盘配额
查看>>
JQuery UI的拖拽功能
查看>>
数据驱动销售——个性化推荐引擎
查看>>
C语言标准库函数qsort那点小事
查看>>
HL7 CDA高级培训
查看>>
Android 调用照相机拍照
查看>>
linux的C获取shell执行返回的结果
查看>>
Shell读取文件内容
查看>>
面对我们喜欢的和我们需要的,应该何去何从?
查看>>
list集合绑定在datagridview上时如何实现排序
查看>>
Codeforces Round #346 (Div. 2) G. Fence Divercity dp
查看>>
python random
查看>>
TortoiseGit学习系列之TortoiseGit基本操作将提交到本地的项目推送到在线仓库(图文详解)...
查看>>
关于spring mybateis 定义resultType="java.util.HashMap"
查看>>
『TensorFlow』读书笔记_Inception_V3_上
查看>>
python爬虫从入门到放弃(四)之 Requests库的基本使用(转)
查看>>
程序员怎么留住健康?
查看>>
【ANT】ant使用
查看>>