Я всегда думал, что использование 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
Выполнение трудоемких задач на @MainActor: стоит ли беспокоиться об отзывчивости пользовательского интерфейса? ⇐ IOS
Программируем под IOS
1729200672
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()
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79097247/running-time-consuming-tasks-on-mainactor-should-i-be-concerned-about-ui-respo[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия