2015-05-21 6 views
5

Supponiamo che un'applicazione scarichi le immagini dal web mentre l'utente sta navigando nell'app. Supponiamo che ci siano immagini virtualmente illimitate e che una nuova immagine venga scaricata ogni volta che l'utente ne richiede una. Queste immagini vengono salvate nella directory tmp per scopi di memorizzazione nella cache. Una volta che l'utente chiude l'app, tutte le immagini scaricate vengono cancellate dall'app.Salvataggio del file nella directory tmp quando lo spazio di archiviazione iphone/ipad è pieno

Ora, poiché ci sono immagini illimitate, cosa succederà se l'utente richiede l'immagine successiva, la memoria è piena e l'app tenta di salvare l'immagine nella directory tmp?

Le immagini precedenti verranno eliminate automaticamente da iOS per fornire lo spazio necessario per le nuove immagini? O L'iOS inizierà a pulire la directory tmp associata ad altre app? (In caso affermativo, cosa succede quando lo spazio di archiviazione è nuovamente pieno e tale pulizia è già stata effettuata per tutte le altre app?) L'app si blocca?

+0

Immagino che inizi a pulire le cartelle 'tmp' di altre app. Ma se hai un iphone, puoi testarlo. –

+0

@InderKumarRathore grazie per il vostro aiuto Inder, mi aspettavo qualche protocollo che iOS segua documentato in alcuni dove ma non è stato in grado di trovarne uno. –

risposta

0

tmp/

Utilizzare questo elenco per scrivere i file temporanei che non hanno bisogno di persistere tra i lanci della vostra applicazione. La tua app dovrebbe rimuovere i file da questa directory quando non sono più necessari; tuttavia, il sistema può eliminare questa directory quando la tua app non è in esecuzione. Il contenuto di questa directory non è supportato da iTunes.

Questa è l'unica cosa documentata. Da questo posso dedurre che non si spurgare tmp se la vostra applicazione è in esecuzione, ma può eliminare il tmp di altre applicazioni che non sono in esecuzione

+0

Sembra perfetto.Non possiamo tuttavia prevedere cosa potrebbe accadere nel caso in cui la directory tmp di altre app venga eliminata, ma lo spazio di archiviazione è nuovamente pieno. –

+0

Tutto ciò che abbiamo ottenuto da documenti ufficiali, ma se vuoi davvero sapere allora devi riempire il tuo iphone e poi testare questo caso, e quindi probabilmente puoi rispondere alla tua domanda molto bene. È interessante sapere cosa accadrà, o puoi aspettare la risposta o puoi farlo tu stesso. Provalo e pubblica i risultati :) –

0

Come dice @InderKumarRathore, la documentazione implicano che il sistema non cancellerà file dalla directory temporanea quando la tua app è in esecuzione. Inoltre, i documenti non promettono che il sistema eliminerà i contenuti dalle directory temporanee di altre app per creare spazio per te.

Suggerisco di codificare in modo difensivo: Tieni traccia dei file più vecchi/meno recenti nella tua directory temporanea e cancellali tu stesso. Il file di verifica preliminare salva per assicurarsi che ci sia spazio sufficiente e visualizza un messaggio all'utente se non c'è spazio sufficiente per salvare i file.

1

Se si tenta di salvare un immagine su disco e il disco è pieno quindi di

- (BOOL)writeToURL:(NSURL *)aURL 
      options:(NSDataWritingOptions)mask 
      error:(NSError **)errorPtr 

Tornerà NO e un oggetto errore verrà assegnato al errorPtr passato nel metodo NSData. Questo errore avrà un NSFileWriteOutOfSpaceError. Questo errore è davvero eccezionale e, una volta ricevuto, è sicuro che il sistema avrà già avvisato l'utente che sta esaurendo lo spazio su disco.

Detto questo, si può dire molto sulla pulizia dopo di te. Se non si utilizzerà più una risorsa immagine salvata, eliminarla dal file system.

Cheers!