versiones programación objective lenguaje framework español ejemplos objective-c cocoa

objective c - programación - ¿Se cierra la aplicación Cocoa cuando se cierra la ventana principal?



versiones de objective c (4)

¿Cómo se cierra una aplicación Cocoa cuando la ventana principal está cerrada? Sin eso, debes hacer clic en el ícono de la aplicación y hacer clic en Salir en el menú.


Debería tener un IBOutlet en su ventana principal. Por ejemplo: IBOutlet NSWindow * mainWindow;

- (void)awakeFromWindow { [mainWindow setDelegate: self]; } - (void)windowWillClose:(NSNotification *)notification { [NSApp terminate:self]; }

Si esto no funciona, debe agregar un observador a su NSNotificationCenter para la Notificación NSWindowWillCloseNotification . No olvide verificar si la ventana derecha se está cerrando.


Puede implementar applicationShouldTerminateAfterLastWindowClosed: para devolver SÍ en el delegado de su aplicación. Pero lo pensaría dos veces antes de hacer esto, ya que es realmente inusual en la Mac fuera de pequeñas aplicaciones de "utilidad" como Calculator y la mayoría de los usuarios de Mac no apreciarán que su aplicación se comporte de forma tan extraña.


Agregue este fragmento de código al delegado de su aplicación:

-(BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)app { return YES; }


Como la pregunta es principalmente sobre la programación de Cocoa y no sobre un lenguaje específico (Objetivo-C), aquí está la versión de Swift de la respuesta de Chuck y Steve:

@NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { func applicationShouldTerminateAfterLastWindowClosed(sender: NSApplication) -> Bool { return true } // Your other application delegate methods ... }

Para Swift 3, cambie la definición del método a

func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return true }