2013-08-08 5 views
1

Я очень новичок в разработке Iphone. У меня проблема. Я использую NSTimer, который обновляет UiLabel каждую секунду. теперь у меня есть две проблемы:NSTimer in background

  1. когда мое приложение уходит в фоновом режиме и после него, когда я открываю приложение. приложение идет зависает.
  2. если я иду следующим или назад на другом экране Ui тогда вэнь я приходит на экране таймера, то моя метка снова показывает 0.

кто может мне помочь.

код, который я использую:

timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES]; 

-(void) updateCountdown 
{ 
    secondsLeft--; 

    //nits testing 
    if(secondsLeft == 1) 
    { 
     [self.view addSubview:recipePage6View.view]; 
    } 



    if (secondsLeft<0) 
    { 
     [timer invalidate]; 
     timer=nil; 
     lblDisplayTimer.text [email protected]"00:00:00"; 

    } 
    else 
    { 
     hours = secondsLeft/3600; 
     minutes = (secondsLeft % 3600)/60; 
     seconds = (secondsLeft %3600) % 60; 

     lblDisplayTimer.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds]; 
     //lblDisplayTimer.text = [NSString stringWithFormat:@"%02d:%02d",minutes,seconds]; 
    } 
} 
+0

Все «NSTimer» недействительны, когда ваше приложение входит в фоновый режим. – rckoenes

+0

Cf. http://stackoverflow.com/questions/17414344/accuracy-of-nstimer/17414593#17414593 – nielsbot

ответ

4

Вам необходимо создать специальную задачу фона таймера и не иметь NSTimer на основном цикле выполнения, который получает подвешенный в фоновом режиме. Документация о том, как это сделать, - here