Эффективный цикл выполнения:
while(... get an event ...)
... handle event ...;
Он работает в потоке;основной поток имеет основной цикл обработки событий, в котором обрабатываются пользовательские события и происходит большая часть рисования пользовательского интерфейса и т. д.Документация объясняет это подробно .
Однако, в вашем случае, вам не нужна нить .
Звучит как вседелаете периодически обновлять метку в пользовательском интерфейсе;что-то, что не требует больших вычислительных ресурсов.
Просто запланируйте свой таймер в главном потоке и покончите с этим.Нет необходимости раскручивать поток, используя performSelectorOnMainThread:
или нести все сложности, гарантирующие согласованность данных между потоками.
Извините - не понял вашего вопроса.
Внутренне цикл выполнения работает, в основном, помещая флаг в цикл выполнения, который говорит: "По истечении этого количества времени запустите таймер".Никаких дополнительных потоков, и, что еще лучше, проверка времени не проводится.Думайте о цикле выполнения как об эффективном поддержании графика времени.Он будет пассивно позволять течению времени, пока на временной шкале не будет найдено что-то интересное (все без опроса - опрос отстой. Его следует избегать).
Это значит, что Таймер никогда не будет равен 100% точный.Кроме того, если у вас есть таймер, повторяющийся каждую секунду, он будет дрейфовать со временем.
Также;вместо непосредственного запуска события рисования.Ваш таймер должен лишить законной силы представление, которое нуждается в обновлении, а затем позволить базовым объектам иметь дело, когда лучше всего фактически обновить экран.