Ответ
Да. DispatchQueue.main — это последовательная очередь, неразрывно связанная с главным потоком приложения (MainThread). Система гарантирует, что любой блок кода, отправленный в DispatchQueue.main.async или DispatchQueue.main.sync, будет выполнен именно на MainThread.
Почему это важно? Все операции с пользовательским интерфейсом (обновление UIKit/SwiftUI представлений) должны выполняться на MainThread, так как UI-фреймворки не являются потокобезопасными.
Пример:
// Этот код выполнится на MainThread
DispatchQueue.main.async {
self.label.text = "Updated"
self.view.setNeedsLayout()
}
Важное уточнение: Обратное утверждение не всегда верно. MainThread может выполнять код не только из MainQueue. Например, если вызвать performSelector(onMainThread:) или OperationQueue.main.addOperation, задача также попадет на MainThread, но через другие механизмы. Однако для GCD связь MainQueue → MainThread абсолютна.