5St*_*yan 4 parameters methods objective-c selector nstimer
我已经阅读了SO以及查看NSTimer类的Apple文档,看起来创建计时器的最简单方法是使用以下方法:
[NSTimer scheduledTimerWithTimeInterval:15.0
target:self
selector:@selector(fireThisMethod:)
userInfo:nil
repeats:NO];
Run Code Online (Sandbox Code Playgroud)
据我所知,这将创建一个15秒后触发的计时器.将被触发的方法将是传递到"selector"的任何方法(在本例中为"fireThisMethod").由于"重复"是"否",这意味着它只会被触发一次.我的问题是:
1)是否可以将方法传递给具有多个参数的"选择器"?我见过没有任何参数的方法,或者在这种情况下为1(因为方法名后面有":").一个方法如fireThisMethod:anotherParameter:?
2)我不确定我是否真正了解"target"和"userInfo"参数的用途.你会有一个不是"自我"的"目标"吗?你有一个不是零的"userInfo"吗?如果是这样,在什么情况下?
谢谢
不.看看文档.引用:
选择器必须具有以下签名:
- (void)timerFireMethod:(NSTimer*)theTimer
没有参数的方法的选择器是错误的.要传递的参数是计时器,因此您可以执行以下操作:区分从您的方法触发的计时器(如果多个计时器调用相同的方法).
目标可以是实现给定方法的任何对象.有时您可能需要特定对象(除了self)才能在计时器触发后执行该任务.
这正是您正在寻找的.userInfo可以是任何对象,可能是数据容器,NSValue或任何其他东西.使用此方法将额外信息传递给您的方法,该方法将提取它,如下所示:
- (void)timerFireMethod:(NSTimer*)theTimer
{
id info = [theTimer userInfo]; /* give it an appropriate type */
...
}
Run Code Online (Sandbox Code Playgroud)