Всякий раз, когда я создаю init, у которого есть делегат, соответствующий протоколу, я пишу init как это:
- (id)initWithDelegate:(id<ProtocolToConform>)delegate;
Таким образом у меня будет предупреждение, если создающий объект не соответствует протоколу.
Однако я заметил, что метод UIAlertView
init выглядит следующим образом:
- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...
Аргумент delegate не указывает, чтобы соответствовать протоколу UIAlertViewDelegate
? Любые подсказки, почему Apple сделала это именно так?