Цель C - Как мне наследовать от другого класса? - PullRequest
2 голосов
/ 15 сентября 2010
- (id) init
{
     [super init];
     //initialitation of the class
     return self;
}

Я знаю, что когда я наследую от другого класса, я должен позвонить super.init

Применимо ли это к "наследованию от NSObject"?

Ответы [ 2 ]

5 голосов
/ 15 сентября 2010

Да, обычно у вас есть что-то вроде:

- (id) init
{
    if (self = [super init]) {
        // instantiation code
    }

    return self;
}
0 голосов
/ 15 сентября 2010

Технически, да, потому что в документации Apple говорится, что init... методы всегда должны включать в себя вызов super.Однако в настоящее время NSObject реализация -init ничего не делает, поэтому пропуск вызова не помешает вашему коду работать.

Недостатком пропуска вызова super является то, что ваш кодне быть столь же устойчивым к будущим изменениям;например, если позже вы изменили наследование, или если (не дай Бог) Apple изменила метод NSObject -init, чтобы он действительно сделал что-то важное.

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