我有以下NSTimer电话
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(panelVisibility:)
userInfo:nil
repeats:NO];
-(void)panelVisibility:(BOOL)visible{
...
}
我需要将BOOL值传递给panelVisibility方法。如何指定参数值?
答案 0 :(得分:8)
在这种情况下,你没有。查看reference docs:
aSelector
定时器触发时发送到目标的消息。该 选择器必须具有以下内容 签名:
- (void)timerFireMethod:(NSTimer *)theTimer
计时器自身传递为 这种方法的论据。
因此,panelVisibility:
方法可以接受的唯一参数是NSTimer*
,计时器会自动为您传递此参数。
但是,您可以使用userInfo
字段传递您想要的任何其他信息。例如,您可以这样做:
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(panelVisibility:)
userInfo:[NSNumber numberWithBool: myBool]
repeats:NO];
...然后:
-(void)panelVisibility:(NSTimer*)theTimer{
BOOL visible = [theTimer.userInfo boolValue];
//...
}
答案 1 :(得分:1)
你做不到。请注意,docs表示该方法必须具有以下签名:
- (void)timerFireMethod:(NSTimer*)theTimer
使用userInfo
参数传递[NSNumber nnumberWithBool:bool]
并通过调用
BOOL isSomething = [[theTimer userInfo] boolValue];
在方法内部,计时器在被触发时调用。