2012-04-06 12 views
0

Da jede Klasse den Initialisierer von der Oberklasse erbt, habe ich die Standardimplementierung von zu seinem designierten Initialisierer verbunden. (Es funktioniert.)Link superclass init-Methode zum designierten Initialisierer

-Link:

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

Initializer:

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

Meine Frage ist, kann ich immer meine eigene initializer den Weg verknüpfe ich es tat (Link)? Also OHNE den Code unten eigene Initialisierer würde nie aufgerufen werden? Habe ich recht?

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

Antwort

1

Wenn Sie nur mit initWithItemName Ihr Objekt initialisieren, dann müssen Sie nicht auf alle init Methode definieren. Die Initialisierer sind nur gewöhnliche Methoden (keine Magie beteiligt), also was Sie aufrufen, ist, was aufgerufen wird. Es ist jedoch eine gute Vorgehensweise, die Methode init so zu implementieren, dass sie aufgerufen werden kann und das Objekt in einem konsistenten Zustand ist.

Verwandte Themen