Несколько вещей, которые необходимо учитывать при одновременном выполнении в iOS
.
- Все ваши задачи, связанные с
UI/ UIApplication
, будут выполнены в Main thread
, вы никогда не должны выполнять свою задачу пользовательского интерфейса в каком-либо дополнительном потоке. - Если у вас есть какая-либо долго выполняемая задача, такая как подключение к серверу и загрузка данных, обработка данных или любые вычисления бизнес-логики, не связанные с пользовательским интерфейсом, должны выполняться в другом потоке.
Когда ваше приложениеstart, система создает для вас основной цикл выполнения и основной поток, и по умолчанию все задачи выполняются в главном потоке.Итак, как я перечислил выше, вы можете создать вторичный поток, используя GCD
или NSOperationQueue
для выполнения долгосрочных задач, которые не связаны с пользовательским интерфейсом.Потому что, если вы не создаете вторичный поток для долго выполняющихся задач и запускаете его только на Main thread
, то ваш пользовательский интерфейс будет зависать, пока задача не будет завершена, что, очевидно, не очень удобно для пользователя.
Чтобы понять GCD и NSOperationQueue, проверьте эту ссылку: https://www.raywenderlich.com/817-updated-course-ios-concurrency-with-gcd-operations