Я попробовал ответ @NJones, но он не сработал. Немного подтасовав, я обнаружил, что вы должны использовать NSRunLoopCommonModes
, а не NSDefaultRunLoopMode
на mainRunLoop
. Например,
[[NSRunLoop mainRunLoop] addTimer:schedulerTimer forMode:NSRunLoopCommonModes];
Или Swift, который я сейчас использую:
NSRunLoop.mainRunLoop().addTimer(schedulerTimer, forMode: NSRunLoopCommonModes)
хотя, это режим, а не цикл запуска, который мешал ему работать в моем случае.
В документе говорится следующее:
NSDefaultRunLoopMode
Режим для работы с входными источниками, отличными от объектов NSConnection.
Это наиболее часто используемый режим цикла выполнения.
Доступно в iOS 2.0 и более поздних версиях.
NSRunLoopCommonModes
Объекты, добавленные в цикл выполнения с использованием этого значения в качестве режима, отслеживаются всеми режимами цикла выполнения, которые были объявлены как члены набора «общих» режимов; подробности см. В описании CFRunLoopAddCommonMode.
Доступно в iOS 2.0 и более поздних версиях.