2012-01-12 2 views
0

В моем iPhone ТАЙМЕР приложение,NSTimer: Как изменить запланированный метод без задержки?

после некоторого промежутка времени, мне нужно, чтобы изменить запланированный метод т ....

-(void)startTimerAction 
{ 
    NSLog(@"Start timer Action"); 
    NSLog(@"Time is Over %@",[email protected]"YES":@"NO"); 

    if(!isTimeOver) 
    { 
    timer_main = [NSTimer scheduledTimerWithTimeInterval:(1.0) target:self selector:@selector(ShowActicity) userInfo:nil repeats:YES]; 
    } 
    else if(isTimeOver) 
    { 
    timer_main = [NSTimer scheduledTimerWithTimeInterval:(1.0) target:self selector:@selector(continueClock) userInfo:nil repeats:YES];  
    } 

} 

Таким образом, чтобы остановить и перенести его я это делаю. ..в некоторый метод ..

isTimeOver=YES; 
       [timer_main invalidate]; 
       timer_main=nil; 
       [self startTimerAction]; 

для этого есть время задержки или нежелательный интервал перепланировать таймера в новом методе ....

Как я могу сделать это гладко .....

Я просто хочу, чтобы перенести таймер с другим способом без задержки .....

прямо сейчас я делаю это, чтобы исправить это .. ...

 NSTimeInterval x=[[timer_main fireDate] timeIntervalSinceNow]; 
     [timer_main invalidate]; 
     timer_main=nil; 
     sleep(x); 
     totalCount++; 
     seconds++; 
     if(seconds>59) 
     { 
      minutes++; 
      seconds=0; 
     } 

     [self startTimerAction]; 

Спасибо ...

ответ

1

Вы можете schedule repeating timers with a firedate:

NSTimer *timer = [[NSTimer alloc] initWithFireDate:fireDate 
            interval:interval 
            target:self 
            selector:@selector(foo) 
            userInfo:nil 
            repeats:YES]; 
NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; 
[runLoop addTimer:timer forMode:NSDefaultRunLoopMode]; 
+0

... а затем в foo проверьте флаг isTimerOver. – jimmyg

+0

это правильный ответ – blueether

 Смежные вопросы

  • Нет связанных вопросов^_^