Sự khác biệt giữa các giao thức chính thức và không chính thức trong Objective-C là gì?Sự khác biệt giữa các giao thức chính thức và không chính thức trong Objective-C là gì?
Trả lời
chính thức và không chính thức Giao thức
Có hai loại giao thức, chính thức và không chính thức:
Một thức giao thức là một phạm trù trên NSObject, mà hoàn toàn làm cho hầu như tất cả các đối tượng chấp nhận giao thức. (Danh mục là tính năng ngôn ngữ cho phép bạn thêm phương thức vào một lớp học mà không cần phân lớp nó.) Thực hiện các phương thức trong giao thức không chính thức là tùy chọn. Trước khi gọi phương thức, đối tượng gọi kiểm tra để xem cho dù đối tượng mục tiêu có thực hiện nó hay không. Cho đến khi các phương thức giao thức tùy chọn được giới thiệu trong các giao thức không chính thức của Mục tiêu-C 2.0, là cần thiết để cách các lớp Foundation và AppKit thực hiện ủy quyền.
Giao thức chính thức tuyên bố danh sách các phương thức mà lớp khách hàng sẽ được triển khai. Các giao thức chính thức của có tuyên bố riêng, việc chấp nhận và cú pháp kiểm tra loại. Bạn có thể chỉ định các phương thức có yêu cầu thực hiện hoặc tùy chọn với các từ khóa @required và @optional . Các lớp con kế thừa các giao thức chính thức được tổ tiên của chúng chấp nhận. Một giao thức chính thức cũng có thể áp dụng các giao thức khác.
Giao thức chính thức là phần mở rộng cho ngôn ngữ mục tiêu-C.
vì vậy "giao thức không chính thức" chỉ là một tên khác cho thể loại? – Stas
tài liệu của apple là khủng khiếp so với google. –
@JohnDoe vey đồng ý nhiều, tài liệu táo là kẻ giết người. –
Ngôn ngữ mục tiêu-C cung cấp cách chính thức khai báo danh sách các phương pháp (bao gồm cả thuộc tính đã khai báo) làm giao thức. Các giao thức chính thức được hỗ trợ bởi ngôn ngữ và hệ thống thời gian chạy. Ví dụ, trình biên dịch có thể kiểm tra các loại dựa trên các giao thức và các đối tượng có thể quan sát trong thời gian chạy để báo cáo liệu hay không chúng tuân theo một giao thức.
chính thức Nghị định thư: Category
(Triển khai là bắt buộc)
chính Nghị định thư: Extension
(Triển khai là bắt buộc và cần thiết)
Triển khai phương pháp danh mục có phải là tùy chọn không? Tôi không nghĩ như vậy, bởi vì tôi nhận xét một phương pháp thực hiện và ngay lập tức tôi có thể thấy lỗi "Phương pháp định nghĩa cho 'xxxmethod' là mất tích". Xxxmethod được khai báo trong tập tin .h. – selva
Cách đơn giản nhất để mô tả sự khác biệt. – Warewolf
- 1. Sự khác nhau giữa việc sử dụng giao thức không chính thức trên NSObject hoặc giao thức với các phương thức tùy chọn là gì?
- 2. Sự khác biệt giữa "nhóm" và "bắt giữ" trong biểu thức chính quy .NET là gì?
- 3. Sự khác biệt chính giữa phương thức mysql và oracle sql là gì?
- 4. Sự khác biệt giữa các giao thức FIX và FAST?
- 5. Sự khác nhau giữa các định lượng biểu thức chính quy `Greedy` và` Reluctant` là gì?
- 6. Giao thức không chính thức Trong mục tiêu-C?
- 7. Sự khác biệt giữa các công cụ sửa đổi biểu thức chính quy 'm' và 's'?
- 8. Điều gì khác biệt giữa các biểu thức chính quy của Python và Javascript?
- 9. "Ngữ nghĩa chính thức" là gì?
- 10. Tài liệu chính thức cho `attr_accessor` và các phương thức khác của` Mô-đun` là gì?
- 11. Sự khác biệt chính giữa Sinatra và Ramaze là gì?
- 12. Sự khác biệt giữa phương thức getRequestURI và getPathInfo trong HttpServletRequest là gì?
- 13. sự khác nhau giữa phương thức chuỗi và phương thức str trong Python là gì?
- 14. Chính thức, tên tệp là gì?
- 15. Giao thức lặp của Python chính xác là gì?
- 16. Phương thức và doanh nghiệp chính thức
- 17. Sự khác biệt giữa các phương thức lặp và xem là gì?
- 18. Giao thức là gì?
- 19. Sự khác biệt giữa Thuật toán và Phương thức
- 20. Sự khác biệt giữa "__method__" và "phương thức"
- 21. Sự khác nhau giữa các phương thức nặc danh (C# 2.0) và các biểu thức lambda (C# 3.0) là gì?
- 22. Sự khác biệt giữa 'độ chính xác' và 'độ chính xác' là gì?
- 23. Sự khác biệt giữa chính void và int chính?
- 24. Trong Actionscript 3, sự khác nhau giữa toán tử "in" và phương thức "hasOwnProperty" là gì?
- 25. Sự khác nhau giữa giao diện Java và giao thức Objective-C?
- 26. Sự khác nhau chính giữa signcode.exe và signtool.exe là gì?
- 27. Sự khác biệt giữa quá tải phương thức và ghi đè là gì?
- 28. Java tương đương với các đại biểu Cocoa/Objective-C giao thức không chính thức?
- 29. Sự khác biệt giữa các phương thức khởi tạo này là gì?
- 30. Sự khác biệt giữa hai hình thức lắp ráp nội tuyến trong C là gì?
Về giao thức không chính thức được mô tả trong [bài này] (http: // stackoverflow .com/questions/2010058/informal-protocol-in-objective-c) – byJeevan