Выполнение трудоемких задач на @MainActor: стоит ли беспокоиться об отзывчивости пользовательского интерфейса?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Выполнение трудоемких задач на @MainActor: стоит ли беспокоиться об отзывчивости пользовательского интерфейса?

Сообщение Anonymous »

Я всегда думал, что использование Task автоматически запускает трудоемкие задачи в фоновом потоке, обеспечивая отзывчивость пользовательского интерфейса.
Однако в следующем коде я заметил что моя функция fetchNotes (которая отнимает много времени) по-прежнему выполняется в основном потоке пользовательского интерфейса, поскольку UIViewController помечен как @MainActor.
Есть это то, о чем стоит беспокоиться? Повлияет ли это на скорость реагирования пользовательского интерфейса, если в основном потоке пользовательского интерфейса выполняется трудоемкая задача?
Интересно, что во время моих тестов, хотя выполнение fetchNotes занимает несколько секунд, мой пользовательский интерфейс не зависает. Почему пользовательский интерфейс не зависает, когда основной поток пользовательского интерфейса выполняет трудоемкую операцию?
Следует ли мне когда-нибудь рассмотреть возможность использования Task.detached?
Вот мой фрагмент кода.
class MainViewController: UIViewController {
private func fetchNotesAsync() {
print(">>>> fetchNotesAsync \(Thread.isMainThread)") // true

Task {
print(">>>> Task \(Thread.isMainThread)") // true

let noteWrappers = await fetchNotes()

...
}
}

private func fetchNotes() async -> [NoteWrapper] {
// Executing firebase query.getDocuments() to retrieve remote documents.
// query.getDocuments() is a firebase library async function

let querySnapshot = try await query.getDocuments()
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... t-ui-respo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»