2016-11-12 4 views
-2

У меня есть 6 функций. Я хотел бы выполнить 3 из этих функций в фоновом режиме (асинхронный?), В Xcode для Swift 2. Можете ли вы мне помочь, как я могу выполнить эти 3 функции без «замораживания» в пользовательском интерфейсе? Спасибо огромное!Выполнять функции в фоновом режиме (без зависания пользовательского интерфейса)

+2

от Apple [Параллельное программирование Руководство] (https: // разработчик. apple.com/library/content/documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html) может быть хорошим началом ... –

+1

Отправка в Swift 3 намного лучше. Вы действительно не должны использовать Swift 2. – Alexander

ответ

0

Комментарий Мартина R на месте, вы должны прочитать concurrency programming guide от Apple. Но вот один из способов, который вы могли бы использовать:

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0) 
dispatch_async(queue) { 
    doSomethingReallySlowAndTedious() 
} 

Будьте осторожны. Особенно легко ввести ошибки в свой код, просто скопировав код параллелизма. Убедитесь, что вы знаете, что делает каждая функция и параметр.

(Кроме того, рассмотреть наихудшие случаи Может медленные функции застрять навсегда Что делать, если пользователь хочет выйти до медленные функции закончить.?)

+0

Александр Момчлов добавил хороший комментарий к вашему вопросу. Swift 3 теперь имеет гораздо лучший синтаксис для асинхронных файлов, поэтому вам не нужно использовать вызовы типа C, которые я использовал в примере моего ответа. Есть несколько хороших обсуждений на http://stackoverflow.com/questions/37805885/how-to-create-dispatch-queue-in-swift-3/37806522 – jjs

Смежные вопросы