Ini adalah jawaban saya juga. Jadi saya akan berbicara tentang kasus penggunaan kami.
Kami memiliki lapisan layanan dan lapisan UI (di antara lapisan lainnya). Lapisan layanan menjalankan tugas di latar belakang. (Tugas manipulasi data, tugas CoreData, panggilan Jaringan, dll.). Lapisan layanan memiliki beberapa antrian operasi untuk memenuhi kebutuhan lapisan UI.
Lapisan UI bergantung pada lapisan layanan untuk melakukan tugasnya dan kemudian menjalankan blok penyelesaian sukses. Blok ini dapat memiliki kode UIKit di dalamnya. Contoh penggunaan sederhana adalah untuk mendapatkan semua pesan dari server dan memuat ulang tampilan koleksi.
Di sini kami menjamin bahwa blok yang diteruskan ke lapisan layanan dikirim pada antrean tempat layanan dipanggil. Karena dispatch_get_current_queue adalah metode yang tidak digunakan lagi, kami menggunakan NSOperationQueue.currentQueue untuk mendapatkan antrean pemanggil saat ini. Catatan penting tentang properti ini.
Memanggil metode ini dari luar konteks operasi yang sedang berjalan biasanya menghasilkan nol yang dikembalikan.
Karena kami selalu menjalankan layanan kami pada antrean yang diketahui (antrean khusus kami dan antrean Utama), ini berfungsi dengan baik untuk kami. Kami memiliki kasus di mana serviceA dapat memanggil serviceB yang dapat memanggil serviceC. Karena kami mengontrol dari mana panggilan layanan pertama dilakukan, kami tahu layanan lainnya akan mengikuti aturan yang sama.
Jadi NSOperationQueue.currentQueue akan selalu mengembalikan salah satu Antrean kami atau MainQueue.
dispatch_get_current_queue()
tidak digunakan lagi di iOS 6? para dokter tidak mengatakan apa-apa tentang itu