#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 может вам чем-то помочь, томсан и джалия правы, сделайте это так. Даже после этого вы хотите попробовать что-то с циклом выполнения, тогда просто попробуйте с циклом выполнения вторичного потока. Не прикасайтесь к основному циклу выполнения приложения, поскольку ваше приложение может перестать реагировать