Domanda

Questa è solo una questione teorica. Nasce da un problema reale nella mia app, ma ho ri-progettato il problema fuori dell'applicazione. Ma i resti di domanda:

Se nella mia app delegare scrivo il mio oggetto Singleton su disco su applicationWillTerminate: ma uso anche NSNotificationCenter alla chiamata updateSingletonData su UIApplicationWillTerminateNotification in alcuni controller di vista, che avverrà prima? I miei dati verranno scritti nel Singleton, allora il Singleton essere scritti su disco, poi i termina app? O sarà il contrario accadrà, con l'Singleton viene serializzato e poi il Singleton aggiornato (peggio), o sarà l'app appena terminerà dopo un certo periodo di tempo se la serializzazione richiede troppo tempo (molto peggio!) ?

Credo che questo mostra la mia mancanza di comprensione delle budella di Springboard ... grazie a tutti coloro che possono fare luce qui.

È stato utile?

Soluzione

Un paio di cose da notare qui:

  1. solo Apple conoscere l'ordine questi accadrà in, come hanno scritto il codice che lo fa.

  2. Si dovrebbe non si preoccupano dell'ordine questi accadrà. Se lo fai attenzione, allora hai progettato il codice male.

In realtà, si potrebbe andare a controllare cosa ordinare il accadrà in -. Per il vostro dispositivo particolare, per la sua particolare versione di iOS, etc

Ma in realtà, non si dovrebbe importa quale ordine avvengono in. Dai suoni di esso, si dovrebbe essere o sparando al controller della vista per scrivere i dati prima di salvare in applicationWillTerminate:, o lasciando la maniglia View Controller risparmio dopo è scritto i suoi dati.

Altri suggerimenti

Questa domanda è vecchio e la risposta da parte @mattjgalloway è corretto in termini di qualità del codice, ma, per il bene della conoscenza, ho appena visto nella documentazione che la notifica è pubblicato su dopo il UIApplicationDelegate metodo viene chiamato (sottolineatura mia):

Dopo aver chiamato questo metodo , l'applicazione anche i messaggi di UIApplication terminerà la notifica di dare gli oggetti interessati la possibilità di rispondere alla transizione.

https://developer.apple.com/reference/uikit/uiapplicationdelegate / 1623111-applicationwillterminate

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top