Video: Lập trình iOS - Hãy trở thành DEV có tâm [P1] 2025
Theo định nghĩa một giao thức làm rõ các bộ phương pháp có thể được thực hiện bởi bất kỳ lớp nào cho ứng dụng iOS. Các giao thức được sử dụng để xác định các giao diện được thực hiện bởi các lớp. 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 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 lớp 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ó các biến lớp cha mẹ hoặc instance. 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. Lưu ý rằng các chỉ thị trình biên dịch cũng ở đây.
@interface StackOfInteger: NSObject … -dĐâ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 các phương thức giao thức"); [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 số đối tượng) #: protocol ");} Bởi vì đối tượng myStack tuân theo giao thức, các phương thức printMe và printMeToString của nó được gọi.Vì một số đối tượng (đó là id loại để làm cho ví dụ có ý nghĩa hơn) không phù hợp với giao thức Printable, việc kiểm tra sự 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à được phù hợp với các giao thức và sẽ không kiểm tra phù hợp trước.
