2013-07-10 18 views
5

Qualcuno per caso sa come posso svuotare la memoria cache dell'app iOS che sto sviluppando, nel momento in cui passa allo sfondo (applicationDidEnterBackground)? Ho studiato su NSCache ma non riesco ancora a capire come posso recuperare la cache per rimuoverla/liberarla in pratica?Svuota la cache programmaticamente in iOS

+0

'[myCache removeAllObjects];' dovrebbe fare il trucco. –

+0

Grazie per la risposta. Come posso dichiarare/ottenere il valore di "myCache"? Grazie ancora –

+0

È possibile, ad esempio, dichiararlo come qualsiasi altra proprietà: '@property (strong) NSCache * myCache' e utilizzare quasi come' NSMutableDictionary'. Alcuni esempi qui: http://stackoverflow.com/questions/5755902/how-to-use-nscache –

risposta

4

E 'di questo che stai parlando?

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

È inoltre possibile modificare il comportamento della cache delle richieste per memorizzare in modo selettivo le risposte. Se si utilizza lo AFNetworking per caso, è possibile utilizzare setCacheResponseBlock. Per esempio. in un progetto l'ho impostato per restituire nil per tutti i file video e audio di grandi dimensioni. Ma consenti di memorizzare nella cache file di immagini più piccoli.

[streamingOperation setCacheResponseBlock:^NSCachedURLResponse *(NSURLConnection *connection, NSCachedURLResponse *cachedResponse) { 
    return nil; // Ensures we are not unecessarily caching asset data to Cache.db 
}]; 
+0

Ciao Alfie! Non sono sicuro se questo funzionerà per me. L'unica cosa di cui ho bisogno è di pulire la memoria cache quando l'utente nel suo iPad invia l'app in background. Ad esempio, penso che la password e alcuni dati rimangano sempre in memoria (diversi dal wrapper portachiavi) quindi, per ragioni di sicurezza, quei dati in memoria devono essere rimossi. Quello che non so ancora è come indicare il mio programma in base al codice che ho bisogno di recuperare tutti i dati nella cache e liberarlo. Mi spiego? Grazie mille per il tuo interesse. –

+0

Sì, queste informazioni aggiuntive mi aiutano a capire meglio la tua domanda. Puoi fornirmi alcuni esempi di dati che vuoi "cancellare dalla cache in memoria" e anche perché senti il ​​bisogno di cancellarlo? –

+0

Se si è specificamente interessati alla sicurezza di una password mentre è in memoria, sono quasi certo che non ci sia modo per nessuno di accedere a questi dati dalla memoria (cioè non è necessario cancellarli/non preoccuparsi). Se lo stavi memorizzando in NSUserDefaults, sarebbe un problema. Inoltre, a seconda di dove esiste il riferimento alla password, è possibile impostare tale proprietà su zero dopo lo sfondo. –

Problemi correlati