Bạn đã biết qua về Java chứ? Nếu rồi thì Protocol trong Objective-C cũng giống y cái interface trong Java đấy. Ý nghĩa của cả 2 cái (protocol và interface) là như một "cam kết" của một lớp (với các lớp "làm ăn" với nó) là nó sẽ cài đặt một số phương thức nào đó.
Vd: ta có một protocol biểu diễn cho những gì có thể chạy với tên là Runnable
Mã:
@protocol Runnable
- (void) run;
@end
Cũng như với interface trong Java, protocol chỉ liệt kê các phương thức chứ không cài đặt.
Ta có lớp Car và lớp Horse cài đặt protocol trên như sau:
Mã:
@interface Car : NSObject <Runnable>
...
- (void) run {
...
}
@end
@interface Horse : NSObject <Runnable>
...
- (void) run {
...
}
@end
Tất nhiên cách một chiếc xe chạy sẽ khác một con ngựa, tuy nhiên vì chúng thỏa protocol Runnable nên ta chỉ cần
biết là chúng có thể CHẠY. Và một phương thức yêu cầu một object nào đó có thể chạy có thể viết như sau:
Mã:
- (void) ride:(id<Runnable>)runnable {
...
}
Ở đây phương thức chẳng cần biết object nó nhận được là loại gì (kiểu object tổng quát id luôn), chỉ cần biết nó thỏa
protocol Runnable thì cứ thoải mái mà cưỡi (ride), dù là cưỡi xe, cưỡi ngựa, kiểu gì nó cũng chạy :-)
Bạn có thể tìm hiểu thêm ở các tài liệu khác, và thêm cả về informal protocol nữa. Mình chỉ hiểu sao nói vậy thôi
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...