Esiste un modo per disabilitare la terminazione automatica di OS X delle applicazioni?


11

C'è un modo per dire a OS X Lion di disabilitare la terminazione automatica per una determinata applicazione che non si desidera terminare automaticamente?

FYI Lion è un quitter se non lo sapevi già, cosa succede se non vuoi che sia per un determinato Applicaiton.

Lion lascerà le tue applicazioni in esecuzione dietro la schiena se decide che ha bisogno delle risorse e se non sembra che le stia usando. L'euristica per determinare se un'applicazione è "in uso" è molto prudente: non deve essere l'applicazione attiva, non deve avere finestre visibili e non minimizzate e, naturalmente, deve supportare esplicitamente la terminazione automatica.

Ad esempio, supponiamo che non voglia che TextEdit si chiuda automaticamente quando non ho finestre TextEdit aperte e passaggio a un'altra Applicazione.

Dopo aver dato un'occhiata alla sezione Guida alla programmazione dell'app per Mac per la terminazione automatica, ho pensato di provare ad aggiungere la chiave NSSupportsAutomaticTermination con il valore No al file Info.plist per TextEdit. (Non ha funzionato: TextEdit si arresta in modo anomalo all'apertura.)

Da notare, il file non includeva la chiave NSSupportsAutomaticTermination (il che significa che Apple stava usando NSProcessInfo per abilitare la terminazione automatica), quindi l'aggiunta di una chiave probabilmente non avrebbe comunque alcun effetto poiché NSProcessInfo sovrascrive ciò che è nel file plist. (Verificato che non funziona, autofirmando TextEdit con un Info.plist modificato che include la chiave NSSupportsAutomaticTermination e il valore No).

Un effetto collaterale notato è che la modifica di qualsiasi cosa nel file Info.plist provoca l'arresto anomalo di TextEdit all'apertura. La causa viene annotata dal registro degli arresti anomali come "firma del codice non valida", il che significa che l'app TextEdit e tutti i suoi contenuti sono firmati dal codice. La soluzione alternativa è di codesignautofirmare l'app usando il comando e un certificato radice autofirmato come indicato nell'attività Firma del codice .

Dopo quello che ho provato finora, TextEdit obbedisce ancora alla terminazione automatica.


1
Quindi ... se auto-firmi l'app, funziona?
jtbandes,

1
No, il programma si interrompe automaticamente anche dopo la firma automatica, indipendentemente da ciò che ho aggiunto a Info.plist
MrDaniel

1
Hai provato a scaricare la fonte di esempio per TextEdit che Apple fornisce con gli strumenti di sviluppo e modificando (o rimuovendo) le cose NSProcessInfo che si registrano per la terminazione automatica?
Cajunluke,

No, non ci ho provato, dovrebbe funzionare in questo caso. Ma questa domanda va oltre TextEdit. È più una questione di come possiamo aggirare questo problema senza l'intervento a livello di codice sorgente dello sviluppatore. Dal momento che non avremo sempre accesso al codice sorgente per le app che supportano la terminazione automatica.
MrDaniel,

1
"Ecco come funziona Apple" che è solo falso. Questa è una nuova funzionalità, non ben pubblicizzata. Da Apples Docs non è nemmeno chiaro cosa è necessario per il sistema operativo per terminare automaticamente un programma. E Apple non riesce a pubblicizzare questo, né menzionarlo nella pagina delle funzionalità Lion per gli utenti finali. Penso che sia qualcosa di nuovo che Apple sta provando. Se agli utenti finali questo non piace, dovrebbero dare la voce a Apple e agli sviluppatori in modo da poterlo migliorare.
MrDaniel,

Risposte:


14

Il tuo desiderio è il mio comando Terminale ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Si noti che poiché la terminazione automatica in realtà non chiude le applicazioni, ma piuttosto le nasconde , devono essere state correttamente chiuse affinché ciò abbia effetto.


2
Eccellente, buona ricerca user22760. Ho provato come indicato sopra e funziona, grazie. Il caso di test di TextEdit.app non termina più automaticamente dopo aver eseguito le impostazioni predefinite ... e quindi aver aperto e chiuso TextEdit. Alla riapertura di TextEdit, non verrà più autoterminato senza finestre aperte e in esecuzione in background.
MrDaniel,

Interessante. Dopo aver provato questo comando, funziona davvero. Tuttavia, tentare di annullarlo si è rivelato più difficile. per impostazione predefinita scrivere -g NSDisableAutomaticTermination -bool no, o false, o l'eliminazione della chiave non ha alcun effetto e le applicazioni non si
chiuderanno

Questo comando miracoloso funziona per me su Mavericks! Ha effetto quando si ritorna alla sessione o quando si apre una nuova sessione.
Nicolas Barbulesco,

Grazie mille per l'aggiunta delle istruzioni per avviare e chiudere manualmente l'app e quindi riavviarla per vedere l'effetto correttamente!
jtheletter il

1

C'è un modo sicuro per risolvere questo problema, se l'hardware lo supporta. Puoi eseguire l'aggiornamento da Mac OS X 10.7 (Lion) a Mac OS X 10.6 (Snow Leopard).

Sebbene non tutto l'hardware che eseguirà Lion sia in grado di supportare questo sistema operativo migliorato (purtroppo il mio MacBook Air di metà 2011 non lo fa), include Rosetta (che non consente la terminazione automatica, che consente ai processori Intel di eseguire software compilato per PPC processori) e compatibilità con le funzionalità di registrazione per app nell'eccellente WireTap Studio.

Come con qualsiasi aggiornamento, alcune funzionalità vengono perse (come Mission Control , Launch Pad , alcuni gesti) e alcune stranezze del sistema operativo richiedono un po 'di tempo per abituarsi (la direzione di scorrimento è invertita, ad esempio), ma tutto sommato, è un aggiornamento eccellente.


2
Un buon punto, ma per la maggior parte degli utenti la terminazione automatica non vale la pena tornare su Snow Leopard, è solo un piccolo fastidio per alcuni utenti, non sono uno di loro.
MrDaniel,

1
È una soluzione estrema, certo, ma questo è uno dei molti modi in cui Snow Leopard è superiore a Lion. Il loro effetto cumulativo potrebbe indurre qualcuno a desiderare Snow Leopard. Detto questo, sto solo imparando a conviverci, dato che altre caratteristiche di Lion (in particolare legate a iCloud) valgono la pena di sopportare gli svantaggi.
Daniel

La domanda riguarda Lion.
Graham Perrin,

1
@GrahamPerrin così è stata la mia risposta. Il mio punto è che questa è una delle tante cose che Lion ha rotto e una soluzione potrebbe essere quella di non far funzionare Lion.
Daniel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.