2012-12-10 25 views
5

Một số người nói rằng người ta phải sử dụng UIApplication trong chủ đề chính, nhưng tôi không thấy tài liệu này trong tài liệu của Apple. Vì vậy, ai đó có thể vui lòng cho tôi biết nếu nó an toàn để sử dụng UIApplication trong một chủ đề riêng biệt? Nếu nó không an toàn, tài liệu này ở đâu?iOS: là phương pháp gọi của UIApplication trong chủ đề khác với chủ đề chính an toàn?

EDIT: Tôi đang tập trung vào những phương pháp thao tác thông báo cục bộ.

+0

Sẽ giúp ích nếu bạn cụ thể hơn về các phương pháp bạn muốn sử dụng. – rmaddy

+0

@rmaddy cảm ơn bạn, tôi đã thêm những phương pháp mà tôi đang kiểm tra. – CarmeloS

Trả lời

5

Hầu hết các lớp UIKit không phải là chủ đề an toàn. Điều này đã được thảo luận ở chiều dài tại WWDC, vv, nhưng nó không phải là rất tốt tài liệu. Điều tốt nhất tôi có thể tìm thấy là TN2109 mà nhiều lần thảo luận về cách gọi UIKit từ một chuỗi phụ không được phép.

Lưu ý rằng có nhiều ngoại lệ được ghi lại cho quy tắc này. Ví dụ: beginBackgroundTaskWithExpirationHandler và các phương pháp liên quan trên UIApplication được gắn nhãn rõ ràng là an toàn để gọi từ chủ đề không chính. (Điều này cũng ngụ ý rằng các phương pháp khác của UIApplication là không an toàn để gọi từ chủ đề khác, vì đây là những đặc biệt gọi ra.)

Có những ngoại lệ khác cho quy tắc này là tốt, chủ yếu liên quan đến bản vẽ (UIImage, và Các phiên bản UIColor an toàn theo chủ đề, ít nhất là iOS 4.

0

UIApplication là một phân lớp của UIResponder và là một phần của khung công tác UIKit. Vì vậy, tôi đoán nó không phải là chủ đề an toàn bởi vì nó được ghi nhận rằng các lớp UIKit không phải là chủ đề an toàn.

Ngoài ra nó có các phương thức như - setStatusBarOrientation: animated :, tất cả đều dựa trên giao diện người dùng và chắc chắn không thể được gọi trong chuỗi khác ngoài chuỗi chính.

+0

Khi bạn thao tác với giao diện người dùng, nó phải nằm trên luồng chính, nhưng không phải tất cả các phương thức UIApplication đều điều khiển giao diện người dùng. Trong những trường hợp sử dụng trên các chủ đề khác là tốt. – sosborn

+0

Tôi đã chỉnh sửa câu hỏi của mình, tôi đang tập trung vào các phương pháp điều khiển thông báo cục bộ. – CarmeloS

Các vấn đề liên quan