当我更改时间间隔的值时,如何更新我的NSTimer

时间:2010-10-21 15:33:57

标签: ios iphone nstimer

我已经实施了NSTtimer,并且工作正常。我还将时间间隔参数连接到UISlider的{​​{1}}。但是,当我更改它的值时,iPhone仍然以原始时间间隔运行,它不会更新。我如何实现NSTimer并让其更改时间间隔,因为NSTimer的值会发生变化。以下是我用于UISlider的行。

NSTimer

我希望它能够使用[NSTimer scheduledTimerWithTimeInterval:mySlider.value target:self selector:@selector(myMethod) userInfo:nil repeats:YES]; 的值不断更新时间间隔。

2 个答案:

答案 0 :(得分:6)

你不能害怕。使用以下内容使其无效:

[myTimer invalidate];

然后用新时间创建一个新的。您可能还必须先将其设置为nil。

myTimer = nil;
myTimer = [NSTimer scheduledTimerWithTimeInterval:mySlider.value 
                                           target:self 
                                         selector:@selector(myMethod) 
                                         userInfo:nil 
                                          repeats:YES];

答案 1 :(得分:0)

你可以使用GCD做这样的事情

NSTimeInterval timeInterval=1;
BOOL timerInvalidate=NO;
dispatch_async(dispatch_get_global_queue(0, 0),
               ^{
                   while (!timerInvalidate){
                   dispatch_async(dispatch_get_global_queue(0, 0),
                    ^{
                    //your code;
                    });
                   [NSThread sleepForTimeInterval:timeInterval];
                   }

               });

并从代码中的else处更改timeInterval的值。