Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nightcoding
    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
    Mình mới học Obj-C và mình không biết Java. Bạn có thể so sánh với C# hoặc Pascal / Delphi được không ?

    Thanks !

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •