Что делает назначение супер-инициала для себя? - PullRequest
2 голосов
/ 08 апреля 2011

Учитывая этот кусок кода:

-(id) init
{
    self = [super init];
    if (self != nil)
    {
       ...
    }
    return self;
}

Я понимаю, что мы проверяем, что супер инициализация не провалилась, но в противном случае это не имеет смысла для меня, и я был бы признателен за объяснение нубу.

Зачем мне хотеть присвоить результат super init для себя.Если я удалю этот метод из своего класса, метод super init будет вызван в любом случае, и назначения не будет.

1 Ответ

5 голосов
/ 08 апреля 2011

В принципе (и, что удивительно, даже на практике) [super init] может вернуть другой объект!См. http://mikeash.com/pyblog/the-how-and-why-of-cocoa-initializers.html и http://cocoawithlove.com/2009/04/what-does-it-mean-when-you-assign-super.html для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...