2016-03-31 3 views
4

Обычно все делегаты в рамках UIKit/Foundation слабые, за исключением UIWebView.Почему UIWebViewDelegate назначает вместо слабого?

UIWebView's delegate

@property(nonatomic, assign) id<UIWebViewDelegate> delegate; 

Я заинтересован, потому что это вызвало аварию несколько раз в моем приложении, когда вы забыли ноль из делегата в то время как отклоняя ViewController UIWebView в. Обычно вы не ожидаете чего-то подобного, поэтому может быть определенная причина, по которой это значение не установлено по умолчанию.

+0

Хороший вопрос. Отправьте отчет об ошибке Apple. https://bugreport.apple.com – rmaddy

+0

@rmaddy почему вы думаете, что это ошибка? Это может быть и преднамеренным. –

+0

Apple изменила большинство делегатов 'assign' на' слабый' некоторое время назад. Не уверен, почему 'UIWebView' также не был обновлен. – rmaddy

ответ

0

Предположим, что если UIWebViewDelegate определяется как WEAK, то в ARC автоматически будет nil ссылкой делегата. Итак, UIWebViewDelegate отмечен как ASSIGN, потому что если класс не скомпилирован с ARC, тогда мы должны позаботиться о том, чтобы установить его как nil.

+1

, если это так, что они будут иметь его для всех делегатов, а не только для UIWebView. –

Смежные вопросы