Apakah ada cara untuk memanggil blok dengan parameter primitif setelah penundaan, seperti menggunakan performSelector:withObject:afterDelay:tetapi dengan argumen seperti int/ double/
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.
Apakah ada cara untuk memanggil blok dengan parameter primitif setelah penundaan, seperti menggunakan performSelector:withObject:afterDelay:tetapi dengan argumen seperti int/ double/
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:
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...
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...
Di Swift 2, saya dapat membuat antrian dengan kode berikut: let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT) Tapi ini tidak dikompilasi di Swift 3. Apa cara yang disukai untuk menulis ini di Swift
Jika Anda dapat menargetkan iOS 4.0 atau lebih tinggi Menggunakan GCD, apakah ini cara terbaik untuk membuat singleton di Objective-C (thread safe)? + (instancetype)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self...
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...
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...
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
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...
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 =...
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:...
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...
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...
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...
Saya memiliki metode yang menerima blok dan blok penyelesaian. Blok pertama harus berjalan di latar belakang, sedangkan blok penyelesaian harus berjalan dalam antrian apa pun yang dipanggil metode tersebut. Untuk yang terakhir saya selalu menggunakan dispatch_get_current_queue(), tetapi sepertinya...
Bagaimana saya bisa membuat kode saya menunggu hingga tugas di DispatchQueue selesai? Apakah itu membutuhkan CompletionHandler atau sesuatu? func myFunction() { var a: Int? DispatchQueue.main.async { var b: Int = 3 a = b } // wait until the task finishes, then print print(a) // - this...
Saya membaca dokumentasi apple tentang "Memory Management for Dispatch Queues": Meskipun Anda menerapkan aplikasi pengumpulan sampah, Anda masih harus mempertahankan dan melepaskan antrean pengiriman dan objek pengiriman lainnya. Grand Central Dispatch tidak mendukung model pengumpulan sampah...