При переопределении initWithCoder всегда необходимо вызывать [super initWithCoder: coder] - PullRequest
2 голосов
/ 12 марта 2010

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

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

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

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

1 Ответ

3 голосов
/ 12 марта 2010

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

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

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

...