Video: Cách đo diện tích bằng điện thoại chính xác miễn phí 2025
Một giao thức định nghĩa các bộ phương pháp có thể được thực hiện bởi bất kỳ lớp nào. Hãy suy nghĩ về các giao thức như các giao diện định nghĩa mà các lớp học phải thực hiện. Các giao thức thường được sử dụng để xác định giao diện cho các đối tượng uỷ nhiệm.
Với tính năng giao thức, bạn có thể tránh phải ép phân lớp phụ để tạo các lớp đa hình. Mục tiêu-C (không giống như C ++) không cho phép một lớp có nhiều siêu lớp. Do đó các giao thức là một tính năng quan trọng trong Mục tiêu-C vì nó không cho phép thừa kế nhiều.
Khi một lớp thực hiện các phương thức trong một giao thức, lớp được cho là phù hợp với giao thức.
Định nghĩa của một giao thức tương tự như định nghĩa của một giao diện cho một lớp. Tuy nhiên, một giao thức không có biến lớp cha mẹ hoặc các biến dụ. Dưới đây là một ví dụ về định nghĩa giao thức (Printable) từ chương trình máy tính postfix:
@protocol Printable - (void) printMe; / / Tôi có thể để lại ra @ yêu cầu, vì nó là mặc định @ theo mặc định - (NSString *) printMeToString; -d
Với sự xuất hiện (và thực sự với sự phô trương tuyệt vời) của Mục tiêu-C 2. 0, các phương thức giao thức có thể được yêu cầu (mặc định) hoặc tùy chọn.
Đây là việc thực hiện các giao thức trong lớp StackOfInteger:@implementation StackOfInteger; … Các phương pháp StackOfInteger khác … /////////// Các phương pháp để thực hiện các giao thức Printable //////////// - (void) printMe {int k, stackCount = [elements count]; NSLog (@ "Stack-> Last>% dlast), for (k = 0; k% @
Lưu ý rằng phương thức printMeToString không được thực hiện bởi vì nó là tùy chọn.
< Một chương trình có thể kiểm tra xem liệu một đối tượng có phù hợp với một giao thức hay không: printf (" ("Sử dụng phương thức protocol"), [myStack printMe];} else {NSLog (@ "Đối tượng không phù hợp với giao thức% @ n", "Protocolsn"), if ([myStack conformsToProtocol: @protocol (Printable) (đối tượng không phù hợp với tiêu chuẩn của một trong số các đối tượng được sử dụng) protocol ");} Vì đối tượng myStack tuân theo giao thức nên các phương thức printMe và printMeToString của nó được gọi.Kể từ someObject (là kiểu id để làm ví dụ có ý nghĩa hơn) không phù hợp với giao thức Printable, bài kiểm tra cho phù hợp không thành công.
Bạn cũng có thể kiểm tra sự tồn tại của một phương pháp tùy chọn sử dụng phương pháp responsesToSelector.
Bạn có thể làm cho một lớp học thông qua một giao thức chỉ đơn giản bằng cách thực hiện các phương pháp được định nghĩa bởi giao thức đó. Đó là, bạn không phải khai báo giao thức trong giao diện của nó. Tuy nhiên, mặc dù lớp thực hiện các phương pháp giao thức, nósẽ
không phải là là phù hợp với các giao thức và sẽ không kiểm tra phù hợp trước.
