2012-07-02 12 views
9

ho incontrato il codice che assomiglia a questo:Su iOS dove è memorizzata la cache NSURLCache se diskPath: nil?

NSURLCache *URLCache = 
    [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024 
            diskCapacity:1024 * 1024 * 5 
             diskPath:nil]; 

Il problema è che non sono stato in grado di trovare ciò che è il comportamento previsto quando diskPath è passato nulla. NSURLCache docs non descrivono esplicitamente questa situazione, né sono stato in grado di capirlo con i miei test.

Dove viene memorizzata la cache? o è quel codice sopra un bug?

Grazie.

risposta

12

Oggi ho avuto del tempo libero per fare qualche test e ho trovato la risposta. Niente di entusiasmante, ma se siete curiosi:

Per impostazione predefinita iOS utilizzerà un database denominato Cache.db e, come @qegal menzionato, verrà memorizzato nella posizione predefinita.

3

Dal tuo documento collegato:

In iOS, path è il nome di una sottodirectory della directory della cache di default dell'applicazione in cui memorizzare la cache su disco (la sottodirectory viene creata se non esiste).

La mia ipotesi migliore sarebbe che se path è pari a zero (il che significa che non è stato specificato una sottodirectory), la cache sarebbe solo essere memorizzati nella cartella della cache di default (e non in una sottodirectory). Non posso testarlo in questo momento, perché sto avendo alcuni problemi con il computer. Immagino anche che sarebbe stato memorizzato nella directory cache predefinita perché sono sicuro che avresti ricevuto una sorta di avvertimento o errore sia in fase di esecuzione che durante la scrittura del codice. So che se ho scritto qualcosa di simile:

[array writeToFile: nil atomically:NO]; 

otterrei un errore come non ho specificare il percorso in cui il file deve essere scritto.

Spero che questo aiuti!

+0

Puoi condividere come si dovrebbe determinare se la cache è stato memorizzato nel directory predefinita? Posso provarlo dalla mia parte. – jlmendezbonini

+0

@jlmendezbonini Vuoi dire come verificherai che la cache è stata memorizzata? – pasawaya

+0

Sì. Potrei mancare qualcosa di ovvio su come farlo. – jlmendezbonini

2

sotto iOS 8.2 il file cache.db viene conservato a:

(App Folder)/Library/Caches/com.mycompany.appname/Cache.db 

Dove com.mycompany.appname è il tuo ID Bundle

Problemi correlati