¿Hay alguna manera de deshabilitar la terminación automática de aplicaciones de OS X?

¿Hay alguna manera de decirle a OS X Lion que deshabilite la finalización automática para una aplicación determinada que no desea que finalice automáticamente?

FYI Lion es un desertor si aún no lo sabía, ¿qué sucede si no quiere que sea para una determinada aplicación?

Lion cerrará sus aplicaciones en ejecución a sus espaldas si decide que necesita los recursos y si parece que no los está utilizando. La heurística para determinar si una aplicación está "en uso" es muy conservadora: no debe ser la aplicación activa, no debe tener ventanas visibles no minimizadas y, por supuesto, debe admitir explícitamente la terminación automática.

Por ejemplo, supongamos que no quiero que TextEdit se cierre automáticamente cuando no tenga ninguna ventana de TextEdit abierta y cambie a otra aplicación.

Después de echar un vistazo a la sección Guía de programación de aplicaciones de Mac para Terminación automática , pensé que intentaría agregar la clave NSSupportsAutomaticTermination con el valor No al archivo Info.plist para TextEdit. (No funcionó: TextEdit se bloquea al abrir).

Cabe señalar que el archivo no incluía la clave NSSupportsAutomaticTermination (lo que significa que Apple estaba usando NSProcessInfo para habilitar la finalización automática), por lo que agregar una clave probablemente no tendría ningún efecto de todos modos, ya que NSProcessInfo anula lo que está en el archivo plist. (Verificado que esto no funciona, autofirmando TextEdit con un Info.plist modificado que incluye la clave NSSupportsAutomaticTermination y el valor de No).

Un efecto secundario observado es que cambiar algo en el archivo Info.plist hace que TextEdit se bloquee al abrirlo. La causa se anota en el registro de fallos como "firma de código no válida", lo que significa que la aplicación TextEdit y todo su contenido están firmados con código. La solución consiste en autofirmar la aplicación mediante el codesigncomando y un certificado raíz autofirmado, como se indica en la tarea de firma de código .

Después de lo que he intentado hasta ahora, TextEdit sigue obedeciendo a la terminación automática.

Entonces... si autofirmas la aplicación, ¿funciona?
No, el programa aún finaliza automáticamente incluso después de la firma automática, independientemente de lo que haya agregado a Info.plist
¿Ha intentado descargar la fuente de ejemplo para TextEdit que Apple proporciona con las herramientas de desarrollo y editar (o eliminar) las cosas de NSProcessInfo que se registran para la terminación automática?
No, no lo he intentado, eso debería funcionar en este caso. Pero esta pregunta está más allá de TextEdit. Es más una cuestión de si podemos solucionar esto sin la intervención del nivel de código fuente del desarrollador. Dado que no siempre tendremos acceso al código fuente de las aplicaciones que admiten la terminación automática.
Bueno no. El objetivo es seguir las reglas del sistema operativo. Si desea omitir la función sin cambiar el código, use Snow Leopard. Así es como funciona Apple.
"Así es como funciona Apple" eso es simplemente falso. Esta es una característica nueva, que no está bien anunciada. De Apples Docs ni siquiera está claro qué se requiere para que el sistema operativo termine automáticamente un programa. Y Apple no anuncia esto ni lo menciona en la página de funciones de Lion para usuarios finales. Creo que es algo nuevo que Apple está intentando. Si al usuario final no le gusta esto, debe hablar con Apple y los desarrolladores para que puedan mejorarlo.

Respuestas (2)

Tu deseo es mi comando de Terminal ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Tenga en cuenta que dado que la Terminación automática no cierra realmente las aplicaciones, sino que las oculta , deben haberse cerrado correctamente para que esto surta efecto.

Excelente, buen hallazgo user22760. Lo intenté como se indicó anteriormente y funciona, gracias. El caso de prueba de TextEdit.app ya no finaliza automáticamente después de ejecutar los valores predeterminados... y luego abrir y salir de TextEdit. Al volver a abrir TextEdit, ya no terminará automáticamente sin ventanas abiertas y ejecutándose en segundo plano.
Interesante. Después de probar este comando, efectivamente funciona. Sin embargo, tratar de deshacerlo ha resultado ser más difícil. los valores predeterminados escriben -g NSDisableAutomaticTermination -bool no, o false, o la eliminación de la clave no tiene efecto y las aplicaciones no finalizarán automáticamente
¡Este comando milagroso funciona para mí en Mavericks! Surte efecto al volver a la sesión o al abrir una nueva sesión.
¡Muchas gracias por las instrucciones adicionales para iniciar y salir manualmente de la aplicación y luego reiniciarla para ver el efecto correctamente!

Hay una forma segura de solucionar esto, si su hardware lo admite. Puede actualizar desde Mac OS X 10.7 (Lion) a Mac OS X 10.6 (Snow Leopard).

Si bien no todo el hardware que ejecutará Lion puede admitir este sistema operativo mejorado (lamentablemente, mi MacBook Air de mediados de 2011 no lo admite), incluye funciones como la terminación no automática, Rosetta (que permite que los procesadores Intel ejecuten software compilado para PPC procesadores) y compatibilidad con funciones de grabación por aplicación en el excelente WireTap Studio.

Al igual que con cualquier actualización, algunas características se pierden (como Mission Control , Launch Pad , algunos gestos) y algunas peculiaridades del sistema operativo tardan en acostumbrarse (la dirección de desplazamiento se invierte, por ejemplo), pero en general, es un actualización fina.

Buen punto, pero para la mayoría de los usuarios, la Terminación automática no vale la pena volver a Snow Leopard, es solo una molestia menor para algunos usuarios, no soy uno de ellos.
Es una solución extrema, sin duda, pero esta es una de las varias formas en que Snow Leopard es superior a Lion. El efecto acumulativo de ellos podría inducir a alguien a querer Snow Leopard. Dicho esto, solo estoy aprendiendo a vivir con él, ya que otras características de Lion (particularmente relacionadas con iCloud) hacen que valga la pena soportar los inconvenientes.
La pregunta es sobre León.
@GrahamPerrin también fue mi respuesta. Mi punto es que esta es una de las muchas cosas que Lion rompió, y una solución podría ser no ejecutar Lion.