/ / Chiamare [UIImage imageWithData: xxx] più volte - iOS, cacao-touch, uiimage

Chiamando più volte [UIImage imageWithData: xxx] - ios, cacao-tocco, uiimage

Il mio modello proviene da Core Data. I miei bean hanno immagini memorizzate nel modello come NSData.

Per visualizzare le mie immagini, devo fare:

[UIImage imageWithData:bean.imageData]

Va bene se lo faccio ovunque? Voglio dire, dalla vista n. 1 visualizzo l'immagine creando [UIImage imageWithData:], quindi vado alla vista n. 2 dove devo visualizzare la stessa immagine, ma passo solo il bean tra le 2 viste, quindi ricreare UIImage con [UIImage imageWithData].

Mi chiedo se ci vogliono troppe CPU omemoria se lo faccio ... Devo gestire una cache da solo? Penso che questo potrebbe essere un caso d'uso piuttosto comune con CoreData, quindi esiste un modello comune per gestirlo?

risposte:

2 per risposta № 1

imageWithData non memorizzerà nella cache l'immagine (come da documenti, l'unico metodo UIImage da memorizzare nella cache è imageNamed)

Ecco un algoritmo per la memorizzazione nella cache delle immagini, però.


2 per risposta № 2

In risposta alla tua domanda, imageWithData è un po 'lento, quindi no probabilmente non vorraifallo dappertutto. Probabilmente vorresti fare un po 'di memorizzazione nella cache per ottenere le massime prestazioni (o almeno se è probabile che tu recuperi la stessa immagine ripetuta durante una sessione di app con l'app). NSCache, come suggerito da HalR, è un'ottima soluzione per questo.

Inoltre, se le immagini sono enormi, potrestinon desidera affatto memorizzarli in CoreData, ma piuttosto archiviarli nella cartella Documenti e archiviare solo il percorso del nome file in CoreData. È sorprendente quanto sia più lento recuperare l'immagine dal database e quindi utilizzarla imageWithData è che è da usare imageWithContentsOfFile. Certo, se stai facendo il cache, lo faraisubire questo risultato meno frequente, ma se si "recuperano molte immagini separate, la differenza è osservabile. Con le immagini in miniatura, tuttavia, è meno un problema. Tutti disegnano questa linea in un posto diverso, ma per me, se le immagini sono più grandi di 100kb ciascuna (o se sto facendo un sacco di recupero delle immagini), userò l'approccio Documenti.