Wie ein NSObject der Unterklasse auf dem iPhone initialisieren?
-
03-07-2019 - |
Frage
Ich möchte einige Methoden in einer Klasse schreiben, so dass andere Klassen mit diesen Methoden [instance methodName:Parameter]
aufrufen können.
Wenn die Klasse eine Unterklasse von UIViewController
ist, kann ich initWithNibName
es zu initialisieren, verwenden. Aber ich mag die Methoden in einer NSObject die Unterklasse schreiben, wie kann ich es initialisieren?
Lösung 2
Das finde ich arbeiten kann:
TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
Andere Tipps
iphony ist richtig, aber er oder sie nicht sagen, dass Sie die Init-Methode selbst schreiben müssen. Ihre init-Methode im Allgemeinen wie folgt aussehen sollte:
- (id) init
{
if (self = [super init])
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
}
return self;
}
Auch wenn die apple Dokumentation sagt
Die init-Methode in der Klasse NSObject definiert hat keine Initialisierung; es gibt einfach selbst.
und man kann nur zu schreiben versucht sein
- (id) init
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
return self;
}
Das ist falsch und nicht nach dem, was ausdrücklich in der Dokumentation angegeben wird:
In einer benutzerdefinierten Implementierung dieser (init) Methode, müssen Sie Super des aufrufen bezeichnet initializer dann initialisieren und das neue Objekt zurück.
muss. Nicht sollte, könnte, sollte, etc.
Sie sollten nicht NSObject init übernimmt in Zukunft nicht ändern; noch die Oberklasse, aus der benutzerdefinierten Klasse abgeleitet ist.