iPhone tramontando NSUserDefaults a zero quando applicazione è chiusa o in background

StackOverflow https://stackoverflow.com/questions/3642856

  •  30-09-2019
  •  | 
  •  

Domanda

Voglio eliminare tutte le variabili salvate in tutti i campi della NSUserDefaults ogni volta che l'applicazione è chiusa o in esecuzione in background per un certo periodo di tempo - dire 5 minuti

.

Ho provato ad aggiungere una riga al app delegato applicationDidFinishLaunching che assomiglia a questo:

if (UIApplicationStateBackground == TRUE) {
    NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];
}

Ho anche aggiunto solo questa porzione al applicationWillTerminate:

NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];

Niente di tutto questo sembra funzionare e non ho idea di come impostare una condizione di 'se 5 minuti hanno superato dell'applicazione essere in background, eliminare le variabili NSUserDefaults' -? Qualsiasi aiuto

È stato utile?

Soluzione

mi sento di raccomandare per rimuovere l'oggetto invece di impostare a zero.

- (void)removeObjectForKey:(NSString *)defaultName;

Il comportamento normale di NSUserDefaults è quello di restituire nil quando non c'è chiave corrispondenti alla query, quindi credo che è meglio seguire la stessa regola e non conservare nulla per un determinato tasto.

La speranza aiuta.

Altri suggerimenti

Forse si dovrebbe usare applicationDidEnterBackground :. Scopri questa pagina mela doc .

vorrei fare quanto segue: nella chiamata delegato - (void)applicationWillResignActive:(UIApplication *)application di UIApplication mi farebbe risparmiare un timestamp quando l'applicazione è entrato sullo sfondo. In questo caso non si controlla se l'applicazione sta per lo sfondo o se è appena stato interrotto da esempio uno SMS, ma il colpo utente annullano e continua utilizzando la propria applicazione.

Quando si avvia l'applicazione di nuovo implementare il codice in un altro metodo delegato di UIApplication - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions per determinare quanto tempo sei stato inattivo e pulire le UserDefaults o meno a seconda della durata.

Per ulteriori informazioni di applicazione diventare inattivi e rilancio controllare questo documento, della documentazione di Apple http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html# // apple_ref / doc / uid / TP40007072-CH3-SW10

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