TGViewer
Мобильный трудоголик Мобильный трудоголик @hardworkerit · 1.64K subscribers
Post #218 1.22K
🔢 Как правильно делать задержку в iOS приложении и не блокировать интерфейс.

Привет, друзья! Сегодня разберем как правильно организовать задержку выполнения кода в iOS-приложении.


DispatchQueue.main.asyncAfter.

Решение для задержки 2 секунды на главном потоке:


func showHelloMessage() {
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
print("Привет!")
}
// Код продолжает выполняться здесь без задержек
}



Task + await.

Для асинхронного контекста:


func showHelloMessage() async {
try? await Task.sleep(for: .seconds(2))
print("Привет!")
}



Timer.

Если нужно повторять действие с интервалом:


func showHelloMessage() {
Timer.scheduledTimer(withTimeInterval: 2.0, repeats: true) { _ in
print("Привет!")
}
}



Как делать не нужно.

Выполняем действие через 2 секунды:


func showHelloMessage() {
Thread.sleep(forTimeInterval: 2.0)
print("Привет!")
}


Кажется, что все работает, но за этой простотой скрывается серьезные проблемы:

🔹 Полностью блокирует поток. Пока поток «спит», он не может выполнять другие задачи, которые вы можете ожидать.
🔹 Особенно опасен на главном потоке. Если вызвать Thread.sleep() на главном потоке, ваш интерфейс зависнет на эти 2 секунды. Пользователь не сможет прокручивать скролл, нажимать кнопки, приложение будет непригодным для использования в течении этого времени.


💡 Вывод:

Используйте асинхронные подходы вместо блокирующих. Ваше приложение должно оставаться отзывчивым в любой момент времени.


➡️ Подписаться на канал
Мобильный трудоголик
  • 👍 14
  • ❤ 9
  • 🔥 3
  • 🫡 2
  • 🤝 1
More from @hardworkerit
  1. Oct 6, 2026🔢 Swift 6.4: новая диагностика ретейн циклов. В Swift 6.4 появилась новая диагностика, ко…
  2. Oct 4, 2026🔢 SwiftUI: определение угла раскрытия iPhone Duo. В iOS 27.1 появился модификатор .onHing…
  3. Oct 2, 2026👣 Архитекторы, тестировщики и кодеры. Создаем мультиагентную команду Разработка с ИИ-аген…
  4. Oct 1, 2026🔢 Работа с Picture-in-Picture в iOS. Picture-in-Picture - системная функция iOS, которая…
  5. Sep 29, 2026🔢 Управление тулбарами на iPhone Duo. На iPhone Duo элементы управления навигацией, дейст…
  6. Sep 27, 2026🔢 Новые возможности Hashable в Swift 6.4 В Swift 6.4 добавили Hashable для нескольких тип…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →