Вопросы с тегом «grand-central-dispatch»

Grand Central Dispatch (GCD) предоставляет простой и надежный механизм для параллельных и асинхронных операций, прежде всего в операционных системах Apple (например, iOS, macOS, watchOS и tvOS), но также во FreeBSD и MidnightBSD.

465
NSOperation vs Grand Central Dispatch

Я изучаю параллельное программирование для iOS. До сих пор я читал о NSOperation/NSOperationQueue и GCD. Каковы причины использования NSOperationQueueснова GCDи наоборот? Звучит как и то, GCDи другое, NSOperationQueueабстрагируясь от явного создания NSThreadsпользователя. Однако связь между этими...

445
Как мне написать dispatch_after GCD в Swift 3, 4 и 5?

В Swift 2 я смог использовать, dispatch_afterчтобы отложить действие, используя грандиозную центральную диспетчеризацию: var dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC))) dispatch_after(dispatchTime, dispatch_get_main_queue(), { // your function...

341
Создать синглтон с помощью dispatch_once GCD в Objective-C

Если вы можете ориентироваться на iOS 4.0 или выше Используя GCD, это лучший способ создать синглтон в Objective-C (потокобезопасный)? + (instancetype)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; }); return...

255
GCD для выполнения задачи в главном потоке

У меня есть обратный вызов, который может прийти из любого потока. Когда я получаю этот обратный вызов, я хотел бы выполнить определенную задачу в главном потоке. Нужно ли проверять, нахожусь ли я уже в главном потоке - или есть какой-либо штраф, если не выполнить эту проверку до вызова кода ниже?...

243
Как я могу отправить dispatch_sync, dispatch_async, dispatch_after и т. Д. В Swift 3, Swift 4 и далее?

У меня есть много кода в проектах Swift 2.x (или даже 1.x), который выглядит следующим образом: // Move to a background thread to do some long running work dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { let image = self.loadOrGenerateAnImage() // Bounce back to the...

192
Ожидание выполнения двух асинхронных блоков перед запуском другого блока.

При использовании GCD мы хотим подождать, пока два асинхронных блока не будут выполнены и выполнены, прежде чем перейти к следующим шагам выполнения. Каков наилучший способ сделать это? Мы попробовали следующее, но это не сработало:...

192
В Swift как вызвать метод с параметрами в основном потоке GCD?

В моем приложении у меня есть функция, которая создает NSRURLSession и отправляет NSURLRequest, используя sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) В блоке завершения для этой задачи мне нужно выполнить некоторые вычисления, которые добавляют UIImage к вызывающему...

180
Как мне ждать завершения асинхронно отправленного блока?

Я тестирую некоторый код, который выполняет асинхронную обработку с использованием Grand Central Dispatch. Тестовый код выглядит так: [object runSomeLongOperationAndDo:^{ STAssert… }]; Тесты должны ждать окончания операции. Мое текущее решение выглядит так: __block BOOL finished = NO; [object...

159
Дождитесь окончания выполнения цикла swift for loop с асинхронными сетевыми запросами

Я хотел бы, чтобы цикл in отправлял кучу сетевых запросов в firebase, а затем передавал данные новому контроллеру представления после завершения метода. Вот мой код: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)")...

145
iPhone - главная тема Grand Central Dispatch

Я успешно использовал грандиозную центральную диспетчеризацию в своих приложениях, но мне было интересно, каково реальное преимущество использования чего-то подобного: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff или даже dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Я имею...

125
Разница между dispatch_async и dispatch_sync в последовательной очереди?

Я создал такую ​​последовательную очередь: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); В чем разница между так dispatch_asyncназываемым dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); И так...

117
Параллельные и последовательные очереди в GCD

Я изо всех сил пытаюсь полностью понять параллельные и последовательные очереди в GCD. У меня есть некоторые проблемы, и я надеюсь, что кто-нибудь ответит мне четко и по существу. Я читаю, что последовательные очереди создаются и используются для выполнения задач одну за другой. Однако что...

101
Альтернативы dispatch_get_current_queue () для блоков завершения в iOS 6?

У меня есть метод, который принимает блок и блок завершения. Первый блок должен работать в фоновом режиме, а блок завершения должен выполняться в той очереди, в которой был вызван метод. Последнее я всегда использовал dispatch_get_current_queue(), но похоже, что он устарел в iOS 6 или выше. Что...

95
Поддерживает ли ARC очереди отправки?

Я читаю документацию Apple по «Управлению памятью для диспетчерских очередей»: Даже если вы реализуете приложение со сборкой мусора, вы все равно должны сохранять и освобождать очереди отправки и другие объекты отправки. Grand Central Dispatch не поддерживает модель сборки мусора для освобождения...

85
dispatch_once после изменений API Swift 3 GCD

Каков новый синтаксис dispatch_onceSwift после изменений, внесенных в языковую версию 3? Старая версия была следующей. var token: dispatch_once_t = 0 func test() { dispatch_once(&token) { } } Это внесенные изменения в libdispatch ....