cocoa - tareas - monitor de actividad mac atajo
Decisiones de diseño de OS X. ¿Cerrar la aplicación en la última ventana cerrada? (3)
En general, nunca cierre una aplicación basada en documentos cuando se cierre la última ventana. El usuario esperará poder abrir un documento nuevo sin relanzar la aplicación, y los confundirá si no pueden.
Para aplicaciones que no están basadas en documentos, debe tener en cuenta algunas cosas:
- ¿Cuánto tarda mi aplicación en abrirse? Si lleva más de un segundo, probablemente no deberías dejarlo.
- ¿Mi aplicación necesita una ventana para ser útil? Si su aplicación puede funcionar sin Windows, no debe abandonarla.
iTunes no se cierra porque, como mencionó Anne, no necesita una ventana para reproducir música (pregunta 2). Tampoco está basado en Cocoa, por lo que es mucho más difícil cerrarlo después de la última ventana, especialmente porque te permite abrir ventanas para listas de reproducción específicas, por lo que hay una cantidad indefinida de ventanas posibles para abrir.
En mi opinión, la libreta de direcciones no necesita permanecer abierta. Esta podría ser una decisión de diseño que sobra de versiones anteriores de OS X, o podría ser que alguien en Apple simplemente pensó que era mejor dejarla abierta (¿quizás para agregar un contacto?). Tanto iTunes como la Libreta de direcciones proporcionan acceso a sus interfaces principales a través del menú Ventana, así como un atajo de teclado ( Opción + Comando + 1 para iTunes, Comando + 0 para Libreta de direcciones).
A diferencia de Windows, GNOME y la mayoría de las otras GUI, los programas de aplicación OS X no terminan si la ventana principal (o todas las ventanas) de esa aplicación están cerradas.
Por ejemplo, active Firefox, Safari, Word o la mayoría de las aplicaciones basadas en documentos. Haga clic en el punto rojo de la esquina o escriba cmd W para cerrar la ventana. Puede ver que el menú de ese programa aún está activo y el programa aún se está ejecutando. Con OS X newbies, a veces verás a docenas de estos zombies sin ventanas corriendo y se preguntan por qué su computadora se está volviendo más lenta.
Con algunos programas basados en documentos, tiene algún sentido no terminar la aplicación si no tiene ventanas. Por ejemplo, con Safari o Word, aún puede escribir Cmd N y obtener una nueva ventana de documento para lo que fue diseñada para esa aplicación: explorar la web (Safari) o escribir un nuevo documento (Word).
Apple se mezcla con su filosofía de diseño en esto. Algunos cierran en la última ventana cerrada y otros no. Las aplicaciones de terceros son aún más mixtas.
Hay otras aplicaciones que cierran cuando se hace clic en el botón rojo de cerrar. Preferencias del Sistema, Diccionario, Mac App Store, iPhoto y Calculadora terminan cuando se cierra la ventana única o la última. iCal, libreta de direcciones, iTunes, reproductor de DVD no terminan.
Lo que me resulta especialmente molesto es que las aplicaciones que no tienen una función lógica de "Nuevo documento" o "Abrir" aún no terminan cuando se cierra la ventana del documento. Ejemplo: encienda iTunes o la libreta de direcciones y finalice la ventana principal. Allí se sienta un zombie sin ventana y sin otra función que seleccionar manualmente "Salir".
Es fácil cerrar la aplicación después de que se cierra la última ventana. Cocoa incluso le da notificación de ese evento. Simplemente agregue esto a su delegado de la aplicación:
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{
return YES;
}
Mi pregunta es esta: ¿Hay alguna razón por la que NO DEBO dar por terminada mi solicitud después de que se cierra la última ventana? ¿Por qué es esto tan variable en el software OS X? A menos que la aplicación tenga una razón "nueva" o "abierta" o alguna otra razón que se entienda claramente para no terminar sin ventana abierta, la falla en la terminación me parece un error.
La ventana principal de iTunes se puede volver a abrir desde el menú ''Ventana''. Mail.app tiene un comportamiento similar. No puedo pensar en ninguna aplicación que se cierre cuando se cierre la última ventana, y como tal, no creo que haya una buena razón para que tu aplicación se comporte de esa manera (de hecho, me sorprende que no esté en la experiencia del usuario de Apple). directrices, realmente me molestaría!).
Una razón por la que desea cerrar, por ejemplo, la ventana principal de iTunes, pero mantener la aplicación abierta, es poder utilizar la aplicación como una especie de servidor para scripts / aplicaciones de terceros. Raramente uso la interfaz principal de iTunes, sino que controlo mi música con una aplicación de terceros. También escribo AppleScripts para otras aplicaciones que lanzo en lugar de interactuar con la interfaz de esa aplicación.
Según las pautas de interfaz humana de Apple (una guía para desarrolladores de Mac):
En la mayoría de los casos, las aplicaciones que no están basadas en documentos deberían cerrar cuando se cierra la ventana principal. Por ejemplo, las Preferencias del sistema se cierran si el usuario cierra la ventana. Sin embargo, si una aplicación continúa realizando alguna función cuando la ventana principal está cerrada, puede ser apropiado dejarla en funcionamiento cuando la ventana principal esté cerrada. Por ejemplo, iTunes continúa jugando cuando el usuario cierra la ventana principal.