2012-04-06 2 views
0

Поскольку каждый класс наследует инициализатор от суперкласса, я связал реализацию по умолчанию init с его назначенным инициализатором. (Это работает.)Ссылка на метод суперкласса суперкласса на назначенный инициализатор

Ссылка:

-(id)init { 
    return [self initWithItemName:@"Default Value" 
        valueInDollar:0 
        serialNumber:@""]; 
} 

Initializer:

-(id)initWithItemName:(NSString *)myItemName 
     valueInDollar:(int)myValueInDollar 
     serialNumber:(NSString *)mySerialNumber; 

Мой вопрос, я всегда должен связать мой собственный инициализатор, как я это сделал (Link)? Таким образом, без кода ниже собственных инициализаторов никогда не будет вызываться? Я прав?

-(id)init { 
    return [self myInitMethod......"]; 
} 

ответ

1

Если вы только инициализировать объект с initWithItemName, то вам не нужно определить метод init вообще. Инициализаторы - это просто обычные методы (магия не задействована), поэтому вы вызываете то, что вызывается. Но это хорошая практика для реализации метода init, чтобы он мог быть вызван, и объект будет находиться в согласованном состоянии.

Смежные вопросы