Bất cứ khi nào tôi có thể tạo một init mà có một đại biểu phù hợp với một giao thức tôi viết init như thế này:init với giao thức đại biểu
- (id)initWithDelegate:(id<ProtocolToConform>)delegate;
Bằng cách này tôi sẽ có một cảnh báo nếu đối tượng tạo không phù hợp với các giao thức.
Tuy nhiên tôi nhận thấy rằng ví dụ phương pháp UIAlertView
init trông như thế này:
- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...
Đối số đại biểu không chỉ định để phù hợp với các giao thức UIAlertViewDelegate
? Bất kỳ manh mối nào tại sao Apple đã làm theo cách đó?
Tôi nghĩ rằng chúng quá lười để thêm vào đó, hoặc có thể là do tất cả các phương thức UIAlertViewDelegate là tùy chọn, không quan trọng nếu đại biểu có tuân theo giao thức hay không. – howanghk
nó sẽ không đưa ra bất kỳ lợi ích nào trong trường hợp này, nó sẽ chỉ là một nỗi đau thêm để tuân theo giao thức cho các lớp học của bạn. – holex