Код, который вы разместили, в порядке.Runloop связан с конкретным потоком.Таймеры обычно запускаются в основном потоке / главном цикле выполнения.Таким образом, они будут вызывать «икоты» в главном потоке, если их код выполняется слишком долго.Не вызывайте блоки / селекторы, чей код требует много времени для запуска из основного потока / присоединения их к основному циклу выполнения, иначе вы вызовете замедление пользовательского интерфейса.
Вы также можете создать и запустить таймерна фоне темы.Обычно я использую один из методов scheduledTimer()
, который создает таймер и добавляет его в «текущий цикл выполнения» (что означает цикл выполнения для текущего потока.)
Если вы хотите запустить таймерв другом потоке вы можете вызвать один из scheduledTimer()
методов из вашего фонового потока.Однако помните, что вам не следует делать вызовы UIKit из фонового потока.