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

575
Использование одноэлементной модели dispatch_once в Swift

Я пытаюсь разработать подходящую модель синглтона для использования в Swift. До сих пор я смог получить не поточную модель, работающую как: class var sharedInstance: TPScopeManager { get { struct Static { static var instance: TPScopeManager? = nil } if !Static.instance { Static.instance =...

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...

213
Перегрузка функции Python

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

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 или выше. Что...