Нужно ли мне использовать цикл выполнения с моим NSTimer в этом случае?

#iphone #ios4 #nstimer #nsrunloop

#iPhone #ios4 #nstimer #nsrunloop

Вопрос:

Я не хочу, чтобы мое приложение спало (), но я хочу, чтобы оно ждало, пока мой таймер завершит свое действие (в основном, обновляя 4 метки пользовательского интерфейса, по одной в секунду).

Есть некоторый код, который я хочу запустить обратно в основном цикле после завершения работы таймера — я хочу, чтобы он подождал, пока таймер не завершится. На данный момент основной цикл запускает таймер, а затем переходит прямо к следующему блоку кода (в то время как таймер отсчитывает время в фоновом режиме). Но на самом деле, я хочу, чтобы таймер завершил обновление 4 UILabels, а затем я хочу, чтобы основная программа запустила следующий блок кода.

Я гуглю и смотрю несколько плохих руководств на YouTube, но я думаю, что мне следует использовать цикл выполнения. Было бы это правильно?

Ответ №1:

Почему бы вам не поместить код, который вы хотите запустить, В функцию, вызываемую таймером? Таким образом, он не будет вызван до завершения работы таймера?

Комментарии:

1. Думаю, я мог бы это сделать, просто это казалось не очень объектно-ориентированным, поскольку было бы много кода, который не имеет ничего общего с таймером.

Ответ №2:

требуется использовать NSTimer .

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

 NSTimer* myTimer = [NSTimer scheduledTimerWithTimeInterval: 60.0 target: self
                                   selector: @selector(callAfterSixtySecond:) userInfo: nil repeats: YES];
  

Через каждые 60,0 секунды iOS будет вызывать приведенную ниже функцию

 -(void) callAfterSixtySecond:(NSTimer*) t 
{
    NSLog(@"red");
    //Put all your UILabel here
}
  

Ответ №3:

Я не думаю, что runloop может вам чем-то помочь, томсан и джалия правы, сделайте это так. Даже после этого вы хотите попробовать что-то с циклом выполнения, тогда просто попробуйте с циклом выполнения вторичного потока. Не прикасайтесь к основному циклу выполнения приложения, поскольку ваше приложение может перестать реагировать