我有一个“段控制”分配给具有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];
}
}
如何阻止它?
先谢谢你
答案 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
}