При переопределении initWithCoder всегда необходимо вызывать [super initWithCoder:кодер]

StackOverflow https://stackoverflow.com/questions/2435203

Вопрос

В этом коде я загружаю контроллер представления (и связанное с ним представление) из .xib:

-(id)initWithCoder:(NSCoder *)coder
    {
    // add custom initialisation code here
    [super initWithCoder:coder];
    return self;
    }

Это успешно работает, но я не совсем понимаю, что делает строка [super initWithCoder:coder].Это инициализация моего контроллера представления после инициализации моего представления?

Пожалуйста, будьте как можно более откровенны при объяснении.Спасибо.

Это было полезно?

Решение

Ваш класс является подклассом UIViewController.Звонок сообщает о вашем суперклассе (UIViewController), чтобы выполнить шаги, которые необходимо выполнить, чтобы вы могли выполнить шаги инициализации.Это будет настройка любых свойств, которые UIViewController предоставляет или регистрирует уведомления о том, что UIViewController необходимо выполнить свою работу.

Почти каждый раз, когда вы переопределяете метод суперкласса, предлагается вызвать метод суперкласса в дополнение к шагам, которые вам необходимо предпринять.

Редактировать:Кроме того, если вам не нужно ничего делать в методе, предоставляемом суперклассом, вы можете просто пропустить его, и вместо этого будет использоваться метод суперкласса.В данном случае я бы не предоставил initWithCoder: метод, если только вам не нужно было предварительно сформировать какой-либо код в дополнение к тому, что вы показали.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top