Đây là một câu trả lời cho tôi. Vì vậy, tôi sẽ nói về trường hợp sử dụng của chúng tôi.
Chúng ta có một lớp dịch vụ và lớp giao diện người dùng (trong số các lớp khác). Lớp dịch vụ chạy các tác vụ trong nền. (Tác vụ thao tác dữ liệu, tác vụ CoreData, Cuộc gọi mạng, v.v.). Lớp dịch vụ có một số hàng đợi hoạt động để đáp ứng nhu cầu của lớp giao diện người dùng.
Lớp giao diện người dùng dựa vào lớp dịch vụ để thực hiện công việc của nó và sau đó chạy một khối hoàn thành thành công. Khối này có thể có mã UIKit trong đó. Một trường hợp sử dụng đơn giản là lấy tất cả thư từ máy chủ và tải lại chế độ xem bộ sưu tập.
Ở đây chúng tôi đảm bảo rằng các khối được chuyển vào lớp dịch vụ được gửi đi trên hàng đợi mà dịch vụ được gọi trên đó. Vì Dispatch_get_current_queue là một phương thức không được dùng nữa, chúng tôi sử dụng NSOperationQueue.currentQueue để lấy hàng đợi hiện tại của người gọi. Lưu ý quan trọng về tài sản này.
Gọi phương thức này từ bên ngoài ngữ cảnh của một hoạt động đang chạy thường dẫn đến kết quả là không được trả về.
Vì chúng tôi luôn gọi các dịch vụ của mình trên một hàng đợi đã biết (Hàng đợi tùy chỉnh của chúng tôi và Hàng đợi chính), điều này hoạt động tốt đối với chúng tôi. Chúng tôi có những trường hợp mà serviceA có thể gọi serviceB có thể gọi serviceC. Vì chúng tôi kiểm soát cuộc gọi dịch vụ đầu tiên được thực hiện từ đâu, chúng tôi biết phần còn lại của các dịch vụ sẽ tuân theo các quy tắc tương tự.
Vì vậy, NSOperationQueue.currentQueue sẽ luôn trả về một trong các Hàng đợi của chúng ta hoặc MainQueue.
dispatch_get_current_queue()
là không được chấp nhận trong iOS 6? các tài liệu nói gì về nó