? Quiero crear una subclase de NSWindow
. esta subclase necesita inicializar algunas variables miembro antes de que se utilicen. ¿Cuál es la mejor manera de capturar la inicialización en el objetivo c? lo que encuentro es que init
rara vez se llama de una manera que me permite hacer esto. NSWindow
tiene un par de vectores de inicialización que necesitaría anular. ¿Necesito anular cada uno de ellos?¿Cómo debo crear una subclase de inicialización de NSWindow en Objective-C
Respuesta
Cada clase debe tener una llamada inicializador designado. Este es el método init que todos los demás métodos init llaman. Esa es la de anular. La documentación generalmente le dice cuál es el inicializador designado. En el caso de NSWindow
, es:
initWithContentRect:styleMask:backing:defer:
Este método es el inicializador designado para la clase NSWindow.
Además del inicializador designado, también se debe anular -initWithCoder:
si la clase subclase implementa el protocolo NSCoding
. -initWithCoder:
es el inicializador que se utiliza cuando se instancia una instancia de un archivo (como un archivo NIB).
Véase The Designated Initializer en "El lenguaje de programación Objective-C" de Apple.
has necesitado anulando el inicializador designado
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation screen:(NSScreen *)screen
En el macOS 10.12 SDK, el inicializador designado para NSWindow no es el indicado aquí por Abizem pero es el indicado por Ole. Tenga en cuenta la falta del último parámetro, 'pantalla:'. –
que prácticamente invisible 'pantalla:' param tho ... gracias @JerryKrinock, me salvó un poco de frustración – codrut
- 1. Subclase NSWindow estilo iTunes?
- 2. ¿Cómo proporcionar una inicialización adicional para una subclase de namedtuple?
- 3. ¿Cómo crear una subclase en C#?
- 4. ¿Cómo debo generar un vector de inicialización?
- 5. cómo crear una subclase en Eclipse Java EE?
- 6. Sintaxis compacta para crear instancias de una colección de inicialización
- 7. CoreData - cómo crear una subclase de una subclase de NSManagedObject (patrón Generation Gap)
- 8. Otorgue a NSWindow una imagen de fondo
- 9. ¿Cómo crear una clase, una subclase y propiedades en Lua?
- 10. Cómo crear coffeescript singleton subclase
- 11. Crear subclase con diferentes propiedades subclase
- 12. Cómo crear decorador para la inicialización lenta de una propiedad
- 13. ¿Cómo creo una NSWindow modal personalizada?
- 14. Crear un valor cero de una subclase de Número genérico
- 15. ¿Cómo debo crear una buena API (web)
- 16. Ponga una NSWindow transparente permanentemente sobre otra NSWindow
- 17. ¿Existe una sintaxis para crear una subclase anónima en C#?
- 18. Crear una burbuja/círculo de color programáticamente en ObjectiveC y Cocoa
- 19. Cómo crear una subclase común para eliminar el código duplicado
- 20. ¿Debo crear una nueva instancia de delegado?
- 21. Cómo verificar si una NSWindow está visible
- 22. ¿Cómo secuela una subclase de UITableViewCell?
- 23. "Plegar" una NSWindow usando CoreAnimation
- 24. Subclase MKOverlayPathView para crear MKPolylineView
- 25. Puntero a NSWindow Xib después de cargarlo?
- 26. ¿Cómo debo crear mi GUID?
- 27. enviar una notificación desde javascript en UIWebView a ObjectiveC
- 28. obtener tamaño de nswindow
- 29. Bloques ObjectiveC equivalente en Java
- 30. Barra inferior en NSWindow
Si bien es cierto que initWithCoder: es un segundo inicializador designado, las NSWindows creadas con IB no se inicializan con initWithCoder :. Las instancias de 'Custom View' y el objeto genérico de cubo azul caen en el mismo barco. La mayoría de los otros objetos se inicializan con initWithCoder: cuando se cargan desde un archivo NIB. –
@Jon: gracias por la corrección. –
El enlace del inicializador designado está muerto. [Aquí] (https://developer.apple.com/library/mac/documentation/general/Conceptual/DevPedia-CocoaCore/MultipleInitializers.html) es el nuevo. –