2013-03-04 5 views
5

di Apple diceNSUserDefaults gestisce la terminazione automatica in modo sicuro? la documentazione

NSUserDefaults disabilita temporaneamente improvvisa cessazione per evitare l'uccisione di processo tra il momento in cui è stato impostato un default e l'ora in cui il file di preferenze compresa quella di default è stato scritto su disco.

lo fa anche fare questo la risoluzione automatica, o devo synchronize manualmente quando ho il sospetto può verificarsi risoluzione automatica (per esempio quando l'applicazione viene nascosta)?

+0

La modifica è stata apprezzata e migliorata la risposta, ma i revisori l'hanno abbattuto prima che potessi approvarlo. Dagli un altro colpo? –

+0

@Catfish_Man Ho ricreato la modifica di Joe nella tua risposta. –

+0

Grazie. La vergogna Joe non ha avuto credito per questo, ma almeno adesso c'è :) –

risposta

1

Non è necessario eseguire alcuna operazione specifica per la chiusura automatica. Il motivo per cui la terminazione automatica non si comporta in modo diverso da ⌘Q (viene chiamato -[NSApp terminate:] se la chiusura improvvisa non è abilitata) e NSUserDefaults gestisce già ⌘Q bene.

Apple's 2011 WWDC presentation on automatic termination (registrazione richiesta, a partire dalle ore 34:00) ha ulteriori informazioni.

+0

Questo è ottimo se è vero, ma non riesco a trovare alcuna verifica nella documentazione - piuttosto il contrario, trovo ad es. il molto spaventoso "Il sistema può * uccidere * il processo sottostante per un'app auto-terminabile * in qualsiasi momento *". –

+0

Sigh ... Credo di aver bisogno di andare su un radar per ottenere la documentazione corretta. Il talk del WWDC intitolato "Resume & Automatic Termination" ha informazioni migliori. Puoi anche verificare con il debugger te stesso. Impostare un punto di interruzione su - [NSApplication terminate:], chiudere tutte le finestre, allontanarsi e indurre la pressione della memoria. –

+0

(Ho il sospetto che chiunque abbia scritto quel frammento di documenti sia sia un po 'troppo zelante, sia confuso sulla differenza tra Sudden Termination e Automatic Termination) –