Unterklasse 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 auf eine Weise aufgerufen wird, die mir dies ermöglicht. NSWindow
hat ein paar Initialisierungsvektoren, die ich überschreiben müsste. Muss ich jeden von ihnen überschreiben?Wie sollte ich NSWindow Initialisierung in Objective-C
Antwort
Jede Klasse 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 Falle von NSWindow
ist es:
initWithContentRect:styleMask:backing:defer:
Diese Methode ist der designierte Initialisierer für die NSWindow Klasse.
Neben dem initializer bezeichnet, sollten Sie auch -initWithCoder:
außer Kraft setzen, wenn die Klasse Sie das Protokoll NSCoding
Unterklasse implementiert. -initWithCoder:
ist der Initialisierer, der verwendet wird, wenn eine Instanz aus einem Archiv (z. B. einer NIB-Datei) instanziiert wird.
Siehe The Designated Initializer in Apples "The Objective-C Programmiersprache".
Haben Sie versucht, die bestimmte initialiser zwingende sollte man sogenannte bezeichnet initializer
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation screen:(NSScreen *)screen
Im macOS 10.12 SDK ist der angegebene Initialisierer für NSWindow nicht der hier von Abizem angegebene, sondern der von Ole angegebene. Beachten Sie das Fehlen des letzten Parameters 'screen:'. –
das praktisch unsichtbar 'Bildschirm:' param tho ... danke @JerryKrinock, ersparte mir einige Frustration – codrut
- 1. Wann sollte ich eine einheitliche Initialisierung verwenden?
- 2. Sollte ich statische Initialisierung oder Superklasse
- 3. Wie sollte ich einrücken tun nichts Initialisierung Liste Konstruktoren?
- 4. AMF0 Parser in ObjectiveC
- 5. ObjectiveC - wie NSUserNotification Kennung Eigenschaft
- 6. Wie bekomme ich diese Taste auf NSWindow
- 7. wie NSWindow im Vollbild
- 8. Sollte conexpr Initialisierung vor der anderen Initialisierung passieren
- 9. NSWindow wie Quicksilver
- 10. ObjectiveC-Blöcke Java-Äquivalent
- 11. NSWindow Verschwindet
- 12. 2D Dynamische Speicherzuweisung - ObjectiveC
- 13. NSWindow Positionierung
- 14. NSWindow verschwinden
- 15. NSWindow maximiert?
- 16. Kann ich einen ObjectiveC @selector in ein NSDictionary einfügen?
- 17. Wie man benachrichtigt wird, wenn NSWindow schließt
- 18. ObjectiveC: Wo private Instanzeigenschaften deklarieren?
- 19. Präsentieren Sie kleine ModalViewController ObjectiveC
- 20. Löcher in NSView oder NSWindow
- 21. Programmgesteuert erstellen NSWindow in Swift
- 22. ObjectiveC - Anzeigefenster durch verteilte Objekte
- 23. Wie oft sollte ich Datenbankverbindungen schließen?
- 24. NSWindow Größe programmgesteuert festlegen
- 25. Swift NSWindow feste Position
- 26. Wie würde ich ein neues NSWindow über Objective-C erstellen?
- 27. Wie kann ich das Öffnen und Schließen von NSWindow verfolgen?
- 28. NSWindow Titelleiste mit MTKView
- 29. Befestigung NSWindow Größe?
- 30. NSWindow Größenänderungsanzeiger nicht sichtbar
Während es stimmt, dass initWithCoder: ist eine zweite designierte Initialisierer, NSWindows mit IB erstellt werden nicht initialisiert mit initWithCoder:. Instanzen von 'Benutzerdefinierte Ansicht' und das generische Objekt des blauen Würfels fallen in dasselbe Boot. Die meisten anderen Objekte werden tatsächlich mit initWithCoder initialisiert: wenn sie aus einer NIB-Datei geladen werden. –
@Jon: Danke für die Korrektur. –
Die angegebene Initialisierungsverbindung ist inaktiv. [Hier] (https://developer.apple.com/library/mac/documentation/general/Conceptual/DevPedia-CoocoaCore/MultipleInitializers.html) ist das neue. –