Как я могу обновить свой NSTimer при изменении значения интервала времени - PullRequest
7 голосов
/ 21 октября 2010

У меня реализован NSTtimer, и он работает нормально. У меня также есть аргумент временного интервала, связанный с UISlider для iPhone. Однако, когда я изменяю это значение, NSTimer все еще работает в исходном интервале времени, оно не обновляется. Как я могу реализовать NSTimer и изменить его временной интервал при изменении значения моего UISlider. Ниже приведена строка, которую я использую для NSTimer.

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

Я хочу, чтобы он постоянно обновлял интервал времени значением UISlider.

Ответы [ 2 ]

6 голосов
/ 21 октября 2010

Боюсь, ты не можешь.Сделайте его недействительным:

[myTimer invalidate];

Затем создайте новый с новым временем.Возможно, вам также придется сначала установить nil.

myTimer = nil;
myTimer = [NSTimer scheduledTimerWithTimeInterval:mySlider.value 
                                           target:self 
                                         selector:@selector(myMethod) 
                                         userInfo:nil 
                                          repeats:YES];
0 голосов
/ 23 декабря 2013

Вы можете сделать что-то подобное, используя 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];
                   }

               });

И изменить значение timeInterval из другого места в коде.

...