Ответ
Рекомендуемый QoS: .userInitiated.
Почему .userInitiated?
- Обновление документа — это задача, инициированная пользователем (например, сохранение).
- Она должна выполниться быстро, чтобы пользователь мог продолжить работу без ощущения задержки.
- Система выделит достаточно ресурсов для своевременного выполнения.
Пример:
// Пользователь нажал "Сохранить"
DispatchQueue.global(qos: .userInitiated).async {
// Критическая фаза: сериализация данных и запись на диск
self.saveDocumentToDisk()
// Возвращаем результат в главный поток
DispatchQueue.main.async {
self.updateUIAfterSave()
}
}
Альтернативы и когда их использовать:
.utility— для периодического автосохранения. Задача важна, но не требует мгновенной реакции, может выполняться с более низким приоритетом..background— НЕ рекомендуется для непосредственного обновления документа, так как система может сильно ограничить или отложить выполнение. Подходит для чистки временных файлов или логов, связанных с документом..default— средний приоритет. Используйте, если нет четких требований, но.userInitiatedобычно предпочтительнее для отзывчивости.