2 Stimmen

iPhone - Wie sollte ich eine Init-Methode schreiben?

Wie sollte ich eine init-Methode für eine Klasse schreiben, die eine NSObject-Unterklasse ist

  • Nehmen wir an, ich habe eine Klasse namens : CustomButton subclassing UIButton
  • Ich habe eine leere nib-Datei mit dem Namen CustomButton.nib, die einen einzigen UIButton enthält.
  • IN interface builder wird der Klassenname für die Schaltfläche auf "CustomButton" gesetzt

Wie würden Sie eine init-Methode für diese Klasse schreiben, damit sie aus der nib-Datei geladen wird?

7voto

Nimrod Punkte 5168

Wenn Sie eine benutzerdefinierte Initialisierung innerhalb von CustomButton benötigen, verwenden Sie dies:

- (id)initWithCoder:(NSCoder *)decoder {
    if (self = [super initWithCoder:decoder]) {
        /* do initialization here */
    }
return self;
}

Dies wird nicht aufgerufen, wenn Sie die Schaltfläche direkt im Code instanziieren, sondern nur, wenn sie über den Nib-Loader instanziiert wird. Instanziierung durch Code bedeutet, dass Sie initWithFrame also setzen Sie diese außer Kraft. Sie können tatsächlich wollen initWithCoder und initWithFrame die gleiche initAlways Methode oder etwas aufrufen.

Außerdem ist es wichtig, das Objective-C-Konzept des "designierten Initialisierers" zu kennen (schlagen Sie es in den Objective-C-Dokumenten nach), da es für Leute, die an andere OO-Sprachen gewöhnt sind, ein wenig verwirrend sein kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X