NSTimer замораживает приложение, пока оно не будет запущено снова? - PullRequest
1 голос
/ 13 апреля 2010

У меня есть простое приложение с кнопкой, UIImageView и NSTimer. Таймер включается каждые 5 секунд, чтобы обновить ImageView новым изображением, в то время как кнопка просто останавливает таймер и переключается на другое представление.

Проблема в том, что когда я нажимаю кнопку, в течение нескольких секунд ничего не происходит (пока таймер снова не включится).

Есть ли способ заставить кнопку останавливать таймер и выполнять свою работу в любой момент времени, а не между интервалами таймера?

Кнопка определена в InterfaceBuilder и подключена к функции в коде.

Код NSTimer: (я пробовал с & без добавления его в RunLoop).

updateTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(updateImageViews) userInfo:nil repeats:YES];</p> <pre><code>NSRunLoop* runLoop = [NSRunLoop currentRunLoop]; [[NSRunLoop currentRunLoop] addTimer:updateTimer forMode:NSDefaultRunLoopMode]; [runLoop run];

Спасибо!

1 Ответ

1 голос
/ 18 апреля 2010

«Обратите внимание, что с точки зрения NSRunloop объекты NSTimer не являются« входными »- это особый тип, и одна из вещей, которые означают, что они не вызывают возврат цикла выполнения при запуске». (из NSRunLoop Class Reference) - так что я думаю, что вы блокируете продолжение цикла выполнения? Возможно поставить таймер в другой поток в качестве решения? У меня тоже проблемы с этим самостоятельно: (

...