У меня есть 6 функций. Я хотел бы выполнить 3 из этих функций в фоновом режиме (асинхронный?), В Xcode для Swift 2. Можете ли вы мне помочь, как я могу выполнить эти 3 функции без «замораживания» в пользовательском интерфейсе? Спасибо огромное!Выполнять функции в фоновом режиме (без зависания пользовательского интерфейса)
ответ
Комментарий Мартина R на месте, вы должны прочитать concurrency programming guide от Apple. Но вот один из способов, который вы могли бы использовать:
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)
dispatch_async(queue) {
doSomethingReallySlowAndTedious()
}
Будьте осторожны. Особенно легко ввести ошибки в свой код, просто скопировав код параллелизма. Убедитесь, что вы знаете, что делает каждая функция и параметр.
(Кроме того, рассмотреть наихудшие случаи Может медленные функции застрять навсегда Что делать, если пользователь хочет выйти до медленные функции закончить.?)
Александр Момчлов добавил хороший комментарий к вашему вопросу. Swift 3 теперь имеет гораздо лучший синтаксис для асинхронных файлов, поэтому вам не нужно использовать вызовы типа C, которые я использовал в примере моего ответа. Есть несколько хороших обсуждений на http://stackoverflow.com/questions/37805885/how-to-create-dispatch-queue-in-swift-3/37806522 – jjs
- 1. В фоновом режиме запускать несколько вызовов api без зависания интерфейса?
- 2. Обновление пользовательского интерфейса Android в фоновом режиме
- 3. Предотвращение зависания пользовательского интерфейса без дополнительных потоков
- 4. Избегайте зависания приложения Android в фоновом режиме
- 5. Как выполнять задачи в фоновом режиме, не затрагивая поток пользовательского интерфейса?
- 6. Операции в фоновом режиме с реакцией пользовательского интерфейса
- 7. Можно ли создать экземпляр объекта пользовательского интерфейса в фоновом режиме?
- 8. Выполнять поиск по массиву в фоновом режиме?
- 9. Выполнять операцию MySQL в фоновом режиме автоматически
- 10. Заполнить сетку данных в фоновом режиме
- 11. Получение удаленной строки URL без зависания пользовательского интерфейса?
- 12. Отправка графического интерфейса Matlab в фоновом режиме
- 13. Как запустить консольное приложение в фоновом режиме (без интерфейса)?
- 14. Вызов функции TextToSpeech без отображения пользовательского интерфейса
- 15. Автоматизация пользовательского интерфейса, кажется, работает в фоновом режиме без запуска браузера
- 16. Запуск функции в фоновом режиме
- 17. Как выполнять тяжелые синхронные операции без блокировки пользовательского интерфейса?
- 18. Создание пользовательского интерфейса в фоновом потоке WPF?
- 19. CoreData в фоновом режиме
- 20. NFC в фоновом режиме
- 21. (iphone) pushViewController в фоновом режиме?
- 22. Пользовательский просмотр в режиме пользовательского интерфейса Fineuploader
- 23. Как выполнять команды в фоновом режиме один за другим?
- 24. Измените адаптер в фоновом режиме
- 25. PHP в фоновом режиме Exec() функции
- 26. Хотите получить вызов API без нарушения пользовательского интерфейса в iOS
- 27. Вызов функции python в фоновом режиме
- 28. REST загрузки в фоновом режиме
- 29. Обновление ObservableCollection без подвешивания пользовательского интерфейса
- 30. Предотвращение зависания пользовательского интерфейса из-за аякс-звонков
от Apple [Параллельное программирование Руководство] (https: // разработчик. apple.com/library/content/documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html) может быть хорошим началом ... –
Отправка в Swift 3 намного лучше. Вы действительно не должны использовать Swift 2. – Alexander