Tôi đã đọc tài liệu nhưng tôi vẫn còn bối rối. Ai đó có thể vui lòng giải thích một giao thức là gì? (Bạn có thể đưa ra các ví dụ về mã nhưng tôi thực sự đang tìm kiếm giải thích)Giao thức là gì?
Trả lời
Here's a great article on it. Có hiệu quả, một giao thức trong Objective-C rất giống với một giao diện trong Java hoặc một lớp ảo thuần túy trong C++ (mặc dù không chính xác như các lớp ảo thuần túy có thể có các thành viên dữ liệu ...). Về cơ bản nó là một đảm bảo rằng một lớp cụ thể biết làm thế nào để đáp ứng với một tập hợp các phương thức (tin nhắn) đã cho.
Chỉnh sửa Bài viết gốc đã biến mất nên tôi đã thay thế nó bằng một hướng dẫn khác.
Giao thức là phương tiện để xác định danh sách các phương thức bắt buộc và/hoặc tùy chọn mà lớp học triển khai. Nếu một lớp thông qua một giao thức, nó phải thực hiện tất cả các phương thức được yêu cầu trong các giao thức mà nó sử dụng. Ca cao sử dụng các giao thức để hỗ trợ truyền thông interprocess thông qua các thông điệp mục tiêu-C. Ngoài ra, vì Objective-C không hỗ trợ đa kế thừa, bạn có thể đạt được chức năng tương tự với các giao thức, vì một lớp có thể áp dụng nhiều giao thức.
Ví dụ điển hình về giao thức là NSCoding, có hai phương thức được yêu cầu mà lớp phải triển khai. Giao thức này được sử dụng để cho phép các lớp được mã hóa và giải mã, tức là lưu trữ các đối tượng bằng cách ghi vào bộ nhớ vĩnh viễn.
@protocol NSCoding
-(void)encodeWithCoder:(NSCoder *)aCoder;
-(id)initWithCoder:(NSCoder *)aDecoder;
@end
Để áp dụng một giao thức, kèm theo tên của giao thức trong <> như dưới đây
@interface SomeClass : NSObject <NSCoding>
{
some variables
}
Làm thế nào để xác định một Nghị định thư?
Chúng tôi có thể tạo cả hai yêu cầu một phương thức tùy chọn trong giao thức. Sau đây là một definion của một giao thức có tên là 'Hello':
@protocol Hello
- (BOOL)send:(id)data;
- (id)received;
@optional
- (int)progress;
@end
Để sử dụng giao thức, như với ví dụ trên, kê khai các giao thức trong giao diện và viết các phương pháp cần thiết trong việc thực hiện lớp:
// Interface @ interface AnotherClass: NSObject
{
some declaration
}
// Thực hiện @implementation AnotherClass
- (BOOL)send:(id)data
{
some declaration
}
- (id)received
{
some code
}
// phương pháp bắt buộc
- (int)progress
{
some code
}
@end
Tôi hy vọng nó sẽ giúp bạn tìm hiểu Nghị định thư.
- 1. Giao thức SMPP là gì?
- 2. Giao thức t3 trong máy chủ weblogic là gì?
- 3. Giao thức lặp của Python chính xác là gì?
- 4. Giao thức kho lưu trữ maven là gì?
- 5. Trong Bộ đệm giao thức của Google, tệp/mô hình giao thức phù hợp cho Ngoại lệ là gì?
- 6. Giao dịch zombie là gì?
- 7. 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ì?
- 8. "Ngữ nghĩa chính thức" là gì?
- 9. 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ì?
- 10. Tên giao diện mạng iOS chính xác là gì? pdp_ip là gì? ap là gì?
- 11. Giao thức phải tuân thủ Giao thức NSObject?
- 12. Nếu một phương thức trả về một giao diện, nó có nghĩa là gì?
- 13. Việc sử dụng phương thức ConvertBack trong giao diện IValueConverter là gì?
- 14. "Giao diện công thức chuẩn cho một data.frame" có nghĩa là gì trong R?
- 15. Mã hóa mặc định cho API đọc từ URL sử dụng giao thức: tệp là gì?
- 16. Chữ ký phương thức cho việc chuyển giao một đại biểu async là gì?
- 17. Cách tốt nhất để xử lý phiên bản bằng giao thức JSON là gì?
- 18. Cách tốt nhất để thực hiện các giao thức là gì?
- 19. giao thức mở tốt nhất cho phần mềm phòng trò chuyện là gì?
- 20. Giao thức hiệu quả nhất để phát đa hướng đáng tin cậy là gì?
- 21. "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" có nghĩa là gì trong Giao thức WebSocket
- 22. Giao thức TDS phiên bản 8.0 là gì và tại sao tôi nên sử dụng nó?
- 23. Ý nghĩa của Giao dịch là gì?
- 24. "Giao dịch được phân phối" là gì?
- 25. Giao diện thông thạo là gì?
- 26. giao diện tĩnh trong java là gì?
- 27. Có gì sai với giao thức Clojure sau đây?
- 28. Giao thức giả JavaScript thực sự làm gì?
- 29. lợi thế của việc sử dụng giao diện là gì
- 30. giao thức không quốc tịch và giao thức trạng thái
Đó là đảm bảo trừ khi giao thức xác định các phương thức tùy chọn. Trong trường hợp đó bạn vẫn phải kiểm tra xem phương thức này có được triển khai hay không. Giao thức –
cũng có thể có các thuộc tính. –
Chỉ muốn chỉ ra cho Người kiểm duyệt liên kết đã chết. – Alix