Есть ли способ вызвать блок с параметром примитива после задержки, например, performSelector:withObject:afterDelay:с использованием аргумента типа int/ double/
Grand Central Dispatch (GCD) предоставляет простой и надежный механизм для параллельных и асинхронных операций, прежде всего в операционных системах Apple (например, iOS, macOS, watchOS и tvOS), но также во FreeBSD и MidnightBSD.
Есть ли способ вызвать блок с параметром примитива после задержки, например, performSelector:withObject:afterDelay:с использованием аргумента типа int/ double/
Я прошел iBook от Apple, и не мог найти его определение: Может кто-нибудь объяснить структуру dispatch_after? dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block:
Я изучаю параллельное программирование для iOS. До сих пор я читал о NSOperation/NSOperationQueue и GCD. Каковы причины использования NSOperationQueueснова GCDи наоборот? Звучит как и то, GCDи другое, NSOperationQueueабстрагируясь от явного создания NSThreadsпользователя. Однако связь между этими...
В 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...
В Swift 2 мне удалось создать очередь со следующим кодом: let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT) Но это не компилируется в Swift 3. Каков предпочтительный способ написать это в Swift...
Если вы можете ориентироваться на iOS 4.0 или выше Используя GCD, это лучший способ создать синглтон в Objective-C (потокобезопасный)? + (instancetype)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; }); return...
У меня есть обратный вызов, который может прийти из любого потока. Когда я получаю этот обратный вызов, я хотел бы выполнить определенную задачу в главном потоке. Нужно ли проверять, нахожусь ли я уже в главном потоке - или есть какой-либо штраф, если не выполнить эту проверку до вызова кода ниже?...
У меня есть много кода в проектах 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...
При использовании GCD мы хотим подождать, пока два асинхронных блока не будут выполнены и выполнены, прежде чем перейти к следующим шагам выполнения. Каков наилучший способ сделать это? Мы попробовали следующее, но это не сработало:...
В моем приложении у меня есть функция, которая создает NSRURLSession и отправляет NSURLRequest, используя sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) В блоке завершения для этой задачи мне нужно выполнить некоторые вычисления, которые добавляют UIImage к вызывающему...
Я тестирую некоторый код, который выполняет асинхронную обработку с использованием Grand Central Dispatch. Тестовый код выглядит так: [object runSomeLongOperationAndDo:^{ STAssert… }]; Тесты должны ждать окончания операции. Мое текущее решение выглядит так: __block BOOL finished = NO; [object...
Я хотел бы, чтобы цикл in отправлял кучу сетевых запросов в firebase, а затем передавал данные новому контроллеру представления после завершения метода. Вот мой код: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)")...
Я успешно использовал грандиозную центральную диспетчеризацию в своих приложениях, но мне было интересно, каково реальное преимущество использования чего-то подобного: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff или даже dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Я имею...
Я создал такую последовательную очередь: 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 */ }); И так...
Я изо всех сил пытаюсь полностью понять параллельные и последовательные очереди в GCD. У меня есть некоторые проблемы, и я надеюсь, что кто-нибудь ответит мне четко и по существу. Я читаю, что последовательные очереди создаются и используются для выполнения задач одну за другой. Однако что...
У меня есть метод, который принимает блок и блок завершения. Первый блок должен работать в фоновом режиме, а блок завершения должен выполняться в той очереди, в которой был вызван метод. Последнее я всегда использовал dispatch_get_current_queue(), но похоже, что он устарел в iOS 6 или выше. Что...
Как я могу заставить свой код ждать завершения задачи в DispatchQueue? Нужен ли для этого CompletionHandler или что-то в этом роде? func myFunction() { var a: Int? DispatchQueue.main.async { var b: Int = 3 a = b } // wait until the task finishes, then print print(a) // - this will contain nil, of...
Я читаю документацию Apple по «Управлению памятью для диспетчерских очередей»: Даже если вы реализуете приложение со сборкой мусора, вы все равно должны сохранять и освобождать очереди отправки и другие объекты отправки. Grand Central Dispatch не поддерживает модель сборки мусора для освобождения...
Каков новый синтаксис dispatch_onceSwift после изменений, внесенных в языковую версию 3? Старая версия была следующей. var token: dispatch_once_t = 0 func test() { dispatch_once(&token) { } } Это внесенные изменения в libdispatch ....