Запитання з тегом «grand-central-dispatch»

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


24
dispatch_after - GCD у Swift?
Я пережив iBook від Apple, і не зміг знайти жодного визначення цього: Чи може хтось пояснити структуру dispatch_after? dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)

8
NSOperation vs Grand Central Dispatch
Я дізнаюся про одночасне програмування для iOS. Поки я читав про NSOperation/NSOperationQueue і GCD. Які причини використання NSOperationQueueнад GCDі навпаки? Звучить як обидва, так GCDі NSOperationQueueабстрагується від явного створення NSThreadsкористувача. Однак зв’язок між двома підходами мені не зрозумілий, тому будь-які відгуки оцінюються!

13
Як записати 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 here }) Але це більше не здається компілювати з Swift 3. Який найкращий спосіб написати це в сучасному Swift?


10
Створіть синглтон, використовуючи 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 sharedInstance; }

4
GCD для виконання завдання в основному потоці
У мене є зворотний дзвінок, який може надходити з будь-якої нитки. Коли я отримую цей зворотний дзвінок, я хотів би виконати певне завдання на головній нитці. Чи потрібно перевіряти, чи вже я в основному потоці - чи є пені, якщо я не виконую цю перевірку befora, викликаючи код нижче? dispatch_async(dispatch_get_main_queue(), …

6
Як я можу 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 main thread to update the UI dispatch_async(dispatch_get_main_queue()) { self.imageView.image = image …

9
Як у Swift як викликати метод з параметрами на головному потоці GCD?
У своєму додатку у мене є функція, яка створює NSRURLSession і надсилає NSURLRequest за допомогою sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) У блоці завершення цього завдання мені потрібно зробити кілька обчислень, які додають UIImage до виклику контролера перегляду. У мене функціонер називається func displayQRCode(receiveAddr, withAmountInBTC:amountBTC) що робить обчислення, що додають UIImage. …

10
Зачекайте, поки два блоки асинхронізації будуть виконані перед запуском іншого блоку
Використовуючи GCD, ми хочемо почекати, поки два блоки асинхронізації будуть виконані та виконані, перш ніж перейти до наступних кроків виконання. Який найкращий спосіб зробити це? Ми спробували наступне, але, схоже, це не працює: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block1 }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block2 }); // wait until …

13
Як чекати, коли асинхронно відправлений блок закінчиться?
Я тестую деякий код, який робить асинхронну обробку за допомогою Grand Central Dispatch. Тестовий код виглядає приблизно так: [object runSomeLongOperationAndDo:^{ STAssert… }]; Тести повинні дочекатися закінчення операції. Моє поточне рішення виглядає приблизно так: __block BOOL finished = NO; [object runSomeLongOperationAndDo:^{ STAssert… finished = YES; }]; while (!finished); Що виглядає трохи …

8
Зачекайте, поки завершення виконання циклу з асинхронними мережевими запитами завершиться
Я хотів би, щоб цикл for in надіслав купу мережевих запитів до firebase, а потім передати дані новому контролеру перегляду, коли метод закінчить виконання. Ось мій код: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)") ref.observeSingleEventOfType(.Value, withBlock: { snapshot in datesArray["\(key.0)"] …

6
iPhone - головна нитка Grand Central Dispatch
Я з успіхом використовував грандіозну центральну розсилку в своїх додатках, але мені було цікаво, яка реальна перевага використання чогось подібного: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff або навіть dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Я маю на увазі, що в обох випадках ви запускаєте блок, який потрібно виконати на головній нитці, саме …

3
Різниця між 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 */ }); І dispatch_syncназивається так у цій послідовній черзі? dispatch_sync(_serialQueue, ^{ /* TASK 1 */ }); dispatch_sync(_serialQueue, ^{ /* TASK 2 */ }); …

6
Паралельні та послідовні черги в GCD
Я намагаюся повністю зрозуміти паралельні та послідовні черги в GCD. У мене є деякі питання і сподіваюся, що хтось може відповісти на мене чітко і в цьому питанні. Я читаю, що послідовні черги створюються та використовуються для виконання завдань одна за одною. Однак, що станеться, якщо: Я створюю послідовну чергу …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.