Хорошо, мое первое приложение - это таймер. Сразу после того, как я устроил Привет, мир, как кажется. Я использую класс NSTimer в качестве таймера и запускаю его каждую секунду, а затем меняю текст в UILabel. Теперь все это работает очень хорошо, за исключением моего самого первого запуска. Каждый раз, когда я запускаю приложение в симуляторе и запускаю таймер, в последнюю секунду происходит странная задержка, оно останавливается примерно на 2 секунды, а затем продолжается, как будто все в порядке. И тогда он работает для каждого набора, который работает.
Вот код, где я настроил NSTimer:
theTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0) target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
Затем в методе onTimer я вызываю updateLabel
countDownLabel.text = [NSString stringWithFormat:@"%02d:%02d", startMin,startSec];
//Check if sets are complete
if(setCount <= numOfSets)
{
setLabel.text = [NSString stringWithFormat:@"Set %02d of %02d", setCount, numOfSets];
//check if timer is complete
if(startMin <= 0 && startSec <= 0)
{
countDownLabel.textColor = [UIColor greenColor];
//run interval timer when timer is complete
if(intervalBetweenSets <= intervalBetweenSetsSetting)
{
setLabel.text = [NSString stringWithFormat:@"Starting set"];
intervalBetweenSets++;
intervalCounterSec--;
countDownLabel.text = [NSString stringWithFormat:@"00:%02d", intervalCounterSec];
}
else
{
//RESET values on timer label
TimerSettings *myTimer = [TimerSettings sharedManager ];
startMin = myTimer.min;
startSec = myTimer.sec;
intervalBetweenSets = 0;
intervalCounterSec = intervalBetweenSetsSetting+1;
countDownLabel.textColor = [UIColor redColor];
countDownLabel.text = [NSString stringWithFormat:@"%02d:%02d", startMin,startSec];
setLabel.text = [NSString stringWithFormat:@"Set %02d of %02d", setCount, numOfSets];
}
}
else
{
//Actual timer for display
if(startSec == 0)
{
startMin = startMin - 1;
}
startSec = startSec - 1;
if(startSec == -1)
{
startSec = 59;
}
if(startMin <= 0 && startSec < 1)
{
//increment number of completed sets
setCount++;
//play sound when timer completes
if (audioPlayer == nil)
;
else
{
[audioPlayer play];
}
}
countDownLabel.text = [NSString stringWithFormat:@"%02d:%02d", startMin,startSec];
}
}
Дело в том, что я не знаю, если это какая-то проблема с таймером или это имеет какое-то отношение к моей логике, если что-то неясно с тем, что я делаю, пожалуйста, спросите, и я уточню.
Спасибо