Pertanyaan yang diberi tag «grand-central-dispatch»

Grand Central Dispatch (GCD) menyediakan mekanisme yang sederhana dan kuat untuk operasi bersamaan dan asinkron, terutama di sistem operasi Apple (mis., IOS, macOS, watchOS, dan tvOS), tetapi juga FreeBSD dan MidnightBSD.


24
dispatch_after - GCD di Swift?
Saya sudah membaca iBook dari Apple, dan tidak dapat menemukan definisi tentang itu: Bisakah seseorang menjelaskan struktur dispatch_after? dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)

8
NSOperation vs Grand Central Dispatch
Saya belajar tentang pemrograman bersamaan untuk iOS. Sejauh ini saya sudah membaca tentang NSOperation/NSOperationQueue dan GCD. Apa alasan untuk menggunakan NSOperationQueuelebih GCDdan sebaliknya? Kedengarannya seperti keduanya GCDdan NSOperationQueueabstrak jauh penciptaan eksplisit NSThreadsdari pengguna. Namun hubungan antara kedua pendekatan itu tidak jelas bagi saya sehingga umpan balik untuk dihargai!

13
Bagaimana cara saya menulis dispatch_after GCD di Swift 3, 4, dan 5?
Di Swift 2, saya bisa menggunakan dispatch_afteruntuk menunda tindakan menggunakan grand central dispatch: 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 }) Tetapi ini sepertinya tidak lagi dikompilasi sejak Swift 3. Apa cara yang disukai untuk menulis ini dalam Swift modern?



4
GCD untuk melakukan tugas di utas utama
Saya memiliki panggilan balik yang mungkin berasal dari utas apa pun. Ketika saya mendapatkan panggilan balik ini, maka saya ingin melakukan tugas tertentu di utas utama. Apakah saya perlu memeriksa apakah saya sudah berada di utas utama - atau adakah hukuman dengan tidak melakukan pemeriksaan ini sebelum memanggil kode di …

6
Bagaimana cara saya dispatch_sync, dispatch_async, dispatch_after, dll di Swift 3, Swift 4, dan seterusnya?
Saya memiliki banyak kode dalam proyek Swift 2.x (atau bahkan 1.x) yang terlihat seperti ini: // 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
Di Swift cara memanggil metode dengan parameter pada utas utama GCD?
Dalam aplikasi saya, saya memiliki fungsi yang membuat NSRURLSession dan mengirimkan NSURLRequest menggunakan sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) Di blok penyelesaian untuk tugas ini, saya perlu melakukan beberapa perhitungan yang menambahkan UIImage ke viewcontroller panggilan. Saya memiliki fungsi yang dipanggil func displayQRCode(receiveAddr, withAmountInBTC:amountBTC) yang melakukan perhitungan penambahan UIImage. Jika saya …

10
Menunggu hingga dua blok async dijalankan sebelum memulai blok lain
Saat menggunakan GCD, kami ingin menunggu sampai dua blok async dieksekusi dan dilakukan sebelum beralih ke langkah eksekusi selanjutnya. Apa cara terbaik untuk melakukannya? Kami mencoba yang berikut, tetapi sepertinya tidak berhasil: 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 both …

13
Bagaimana cara saya menunggu blok yang dikirim secara tidak sinkron untuk diselesaikan?
Saya menguji beberapa kode yang melakukan pemrosesan asinkron menggunakan Grand Central Dispatch. Kode pengujian terlihat seperti ini: [object runSomeLongOperationAndDo:^{ STAssert… }]; Tes harus menunggu operasi selesai. Solusi saya saat ini terlihat seperti ini: __block BOOL finished = NO; [object runSomeLongOperationAndDo:^{ STAssert… finished = YES; }]; while (!finished); Yang terlihat agak …

8
Tunggu hingga swift for loop dengan permintaan jaringan asinkron selesai dieksekusi
Saya ingin agar dalam loop untuk mengirim sekelompok permintaan jaringan ke firebase, kemudian meneruskan data ke pengontrol tampilan baru setelah metode selesai dijalankan. Ini kode saya: 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 - Utas utama Grand Central Dispatch
Saya telah menggunakan dengan sukses, pengiriman grand central di aplikasi saya, tetapi saya bertanya-tanya apa keuntungan sebenarnya dari menggunakan sesuatu seperti ini: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff atau bahkan dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Maksud saya, dalam kedua kasus Anda menembakkan blok yang akan dieksekusi pada utas utama, tepat di …

3
Perbedaan antara dispatch_async dan dispatch_sync pada antrian serial?
Saya telah membuat antrian serial seperti ini: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); Apa bedanya dispatch_asyncdisebut seperti ini dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); Dan dispatch_syncdipanggil seperti ini di antrian serial ini? dispatch_sync(_serialQueue, ^{ /* TASK 1 */ }); dispatch_sync(_serialQueue, ^{ /* TASK …

6
Antrean serentak vs antrean serial di GCD
Saya berjuang untuk memahami antrean serentak dan serial di GCD. Saya memiliki beberapa masalah dan berharap seseorang dapat menjawab saya dengan jelas dan pada intinya. Saya membaca bahwa antrian serial dibuat dan digunakan untuk menjalankan tugas satu demi satu. Namun, apa yang terjadi jika: Saya membuat antrian serial Saya menggunakan …

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.