Sự hiểu biết của tôi là các giao thức giống như giao diện bằng các ngôn ngữ khác - chúng khai báo các phương thức dự kiến - trong khi các danh mục cho phép bạn thêm các phương thức mới vào các kiểu hiện có (có lẽ ngay cả các kiểu bạn không sở hữu.)Tại sao iPhone SDK sử dụng các danh mục, thay vì giao thức, đối với một số đại biểu?
Tại sao, sau đó , SDK iPhone đôi khi có sử dụng các danh mục để khai báo các loại đại biểu không? Thông thường tôi sẽ mong đợi tất cả các đại biểu được gõ id <MyDelegateProtocol> nhưng có rất nhiều ví dụ mà đây không phải là trường hợp.
Ví dụ: xem NSURLConnection. Đại biểu của nó được gõ "id" và "hợp đồng" được khai báo là một thể loại trên NSObject (NSURLConnectionDelegate).
Vì vậy: động lực để sử dụng danh mục trong những trường hợp này là gì?
Đó là phỏng đoán của tôi nhưng tôi không biết chắc chắn. Cảm ơn! –
Mong đợi để xem sự thay đổi giao thức đi kèm khá sớm, mặc dù. Bây giờ các phương thức giao thức tùy chọn được cho phép, sử dụng chúng sẽ dọn sạch mã một chút và loại bỏ rất nhiều loại không cần thiết hiện nay. (Chúng thật tuyệt và tất cả, nhưng thay vì sử dụng các phương pháp tacking trên NSObject trong thời gian chạy, tôi nghĩ có một đại biểu thực hiện một giao thức là sạch hơn, cả về khái niệm lẫn quan điểm thời gian chạy.) –