2013-03-06 15 views
8

Ho un'immagine denominata [email protected]. Il file ha dimensioni di 1 KB. La mia app è un'app solo per iPhone.iOS: l'utilizzo di [UIImage -imageNamed:] senza estensione file causerà problemi di prestazioni?

ho caricare l'immagine nella mia app con questa chiamata:

[UIImage imageNamed:@"image"]; 

Quando si utilizza ho strumento attività O/analizzando le attività di I/O, ho scoperto che ci sono diverse attività relative a questo file che si traducono in Errore "Nessun file o directory" e queste attività richiedono del tempo.

queste attività sono come la lettura di questi file:

[email protected]~iphone.png 
[email protected]~iphone.png 
[email protected] (this one doesn't fail) 

e con mia sorpresa, tutte le operazioni fallite richiede più tempo di quello riuscito.

Come evitare questo tipo di problema di prestazioni?

+0

in qualche modo correlato - http://stackoverflow.com/questions/7599030/uiimage-imagenamed-extension – Krishnabhadra

+0

@CarmeloS. la risposta per "senza estensione del file causa problemi di prestazioni?" ? –

+0

@Rajapandian vedi la risposta selezionata:) – CarmeloS

risposta

5

Se si desidera impedire l'accesso esteso al file system, non utilizzare [UIImage imageNamed:] ma [UIImage imageWithContentsOfFile:].

Quest'ultimo non esegue alcuna selezione automatizzata dell'immagine (ipotesi di estensione, ipotesi di retina, ...) e non utilizzerà la memoria cache.

Assicurarsi che si tenga presente che qualsiasi accesso duplicato su un'immagine sul file system, quando si utilizza il mio suggerimento, sarà punito molto duramente.

Non mi consiglia di non utilizzare imageNamed: per migliorare le prestazioni di un'app. Di solito è vero il contrario e il caricamento dell'immagine sarà più ottimizzato (caching) quando si utilizza quel metodo. Tuttavia, una volta verificato che un'immagine specifica non verrà caricata di nuovo e per prevenire eccessive ricerche nel filesystem, utilizzare imageWithContentsOfFile:. Inoltre, è effettivamente consigliabile utilizzare imageWithContentsOfFile: quando l'utilizzo della memoria è un punto: nessun caching significa meno memoria hogged.

+0

se quest'ultimo non esegue alcun caching o alcuna ottimizzazione, allora Dwayne dovrebbe usare "' imageNamed' "come sta già facendo? –

+0

Oh, non penso che l'OP voglia evitare di indovinare l'estensione, quello che vuole è evitare il problema di prestazioni a causa di esso. Anche il caching delle immagini è una funzione molto importante che influisce positivamente sulle prestazioni. Non penso che questo risponda alla domanda. – Krishnabhadra

+0

Il caching migliora solo le prestazioni per gli hit della cache. Quindi ho pensato che l'OP sarebbe stata in grado di prevenire i fallimenti. – Till

Problemi correlati