При переопределении initWithCoder всегда необходимо вызывать [super initWithCoder:кодер]
-
19-09-2019 - |
Вопрос
В этом коде я загружаю контроллер представления (и связанное с ним представление) из .xib:
-(id)initWithCoder:(NSCoder *)coder
{
// add custom initialisation code here
[super initWithCoder:coder];
return self;
}
Это успешно работает, но я не совсем понимаю, что делает строка [super initWithCoder:coder].Это инициализация моего контроллера представления после инициализации моего представления?
Пожалуйста, будьте как можно более откровенны при объяснении.Спасибо.
Решение
Ваш класс является подклассом UIViewController
.Звонок сообщает о вашем суперклассе (UIViewController
), чтобы выполнить шаги, которые необходимо выполнить, чтобы вы могли выполнить шаги инициализации.Это будет настройка любых свойств, которые UIViewController
предоставляет или регистрирует уведомления о том, что UIViewController
необходимо выполнить свою работу.
Почти каждый раз, когда вы переопределяете метод суперкласса, предлагается вызвать метод суперкласса в дополнение к шагам, которые вам необходимо предпринять.
Редактировать:Кроме того, если вам не нужно ничего делать в методе, предоставляемом суперклассом, вы можете просто пропустить его, и вместо этого будет использоваться метод суперкласса.В данном случае я бы не предоставил initWithCoder:
метод, если только вам не нужно было предварительно сформировать какой-либо код в дополнение к тому, что вы показали.