Haben Sie versucht, die bestimmte initialiser zwingende
%Vor% Ich möchte eine Unterklasse von NSWindow
erstellen. Diese Unterklasse muss einige Elementvariablen initialisieren, bevor sie verwendet werden. Was ist der beste Weg, um die Initialisierung in objective c zu erfassen? Was ich finde, ist, dass init
selten so aufgerufen wird, dass ich das tun kann. NSWindow
hat ein paar Initialisierungsvektoren, die ich überschreiben müsste. Muss ich jeden von ihnen überschreiben?
Jede Klasse sollte einen sogenannten designierten Initialisierer haben. Dies ist die Init-Methode, die alle anderen Init-Methoden aufrufen. Das ist derjenige, der überschrieben wird. Die Dokumentation sagt Ihnen normalerweise, welcher der Initialisierer ist. Im Fall von NSWindow
ist es:
initWithContentRect:styleMask:backing:defer:
Diese Methode ist der initialisierte Initiator für die NSWindow-Klasse.
Zusätzlich zum angegebenen Initialisierer sollten Sie auch -initWithCoder:
überschreiben, wenn die von Ihnen abgeleitete Klasse das Protokoll NSCoding
implementiert. -initWithCoder:
ist der Initialisierer, der verwendet wird, wenn eine Instanz aus einem Archiv (z. B. einer NIB-Datei) instanziiert wird.
Siehe The Designated Initialiser in Apples "The Objective -C Programmiersprache ".
Tags und Links objective-c cocoa