每当我创建一个具有符合协议的委托的 init 时,我将 init 编写为:
- (id)initWithDelegate:(id<ProtocolToConform>)delegate;
这样,如果创建对象不符合协议,我将收到警告。
但是我注意到 ie UIAlertView
init 方法看起来像这样:
- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...
委托参数没有指定符合UIAlertViewDelegate
协议?任何线索为什么Apple会这样做?