如何使用重复停止计时器:是

时间:2014-02-15 23:37:02

标签: ios timer

我有一个“段控制”分配给具有2个定时器的函数

一个重复:NO和一个重复:是的

我想,当我的片段位于“0”位置时,计时器重复播放:否

当我的段位于“1”位置时,计时器重复开启:是

但如果我将我的片段置于“1”位置,我的计时器永不停止 ..

我的职能:

-(IBAction)sendFocusLiveBtn{
if(liveManual.selectedSegmentIndex == 0){
    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(sendFocusLive) userInfo:nil repeats:NO];
}
if (liveManual.selectedSegmentIndex == 1){
    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(sendFocusLive) userInfo:nil repeats:YES];
}

}

如何阻止它?

先谢谢你

2 个答案:

答案 0 :(得分:3)

而不是:

[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(sendFocusLive) userInfo:nil repeats:YES];

本身, 保存 属性(或ivar)中的计时器,如下所示:

self.myTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(sendFocusLive) userInfo:nil repeats:YES];

然后你可以这样做:

[self.timer invalidate];

随时随地准备好真正停止该计时器。

答案 1 :(得分:0)

除了@ MichaelDautermann的回答之外,您应该将选择器更改为sendFocusLive:(注意末尾的冒号)并将选择器声明为:

- (void)sendFocusLive:(NSTimer*)timer
{
    // Here you can test that timer == self.timer to ensure the right timer has triggered this method
    // And you can call [timer invalidate] here when required
    // It's a good idea to set timer to nil after you invalidate it
}