Dopo aver semplicemente ricompilato la nostra applicazione iPhone su iOS 5.0 SDK appena rilasciato ho dovuto affrontare strani problemi - tutti UIImage: imageNamed (prima chiamata con caricamento immagine effettivo) e UIImage: imageWithContentsOfFile ha iniziato a funzionare 10 tempi più lenti di prima. Sono riuscito a restringere il problema: questo è il caso solo per i file jpeg e png (non per i gif!) e questo non dipende dalle dimensioni del file. anche il caricamento diretto di piccoli 32 * 32 png richiede circa 300ms ... rispetto ai 30ms su dispositivi precedenti (verificati su 3.1 e 4.3.5 con lo stesso identico codice)UIImage: imageWithContentsOfFile è 10 volte più lento in iOS 5.0
ho anche provato a caricare l'immagine tramite CIImage appena introdotto con questo codice
WLLog(@"Data loading...");
NSData *imageData = [NSData dataWithContentsOfFile:path];
WLLog(@"CIImage creation...");
CIImage* cii = [CIImage imageWithData:imageData];
WLLog(@"CIImage creation ok...");
float scle = 1.0;
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
scle = [[UIScreen mainScreen] scale];
}
#endif
CIContext *context = [CIContext contextWithOptions:nil];
UIImage* res5 = [[UIImage alloc] init];
WLLog(@"UIImage creation...");
[res5 initWithCGImage:[context createCGImage:cii fromRect:cii.extent] scale:scle orientation:UIImageOrientationUp];
WLLog(@"Done!");
senza alcuna fortuna ... questa singola linea
CIImage* cii = [CIImage imageWithData:imageData];
prende gli stessi 300ms anche su piccole immagini (4Kb PNG). imho, non c'è niente da analizzare affatto!
C'è qualcosa per risolvere questo strano cambiamento nei tempi di caricamento? Per ora sembra che qualcosa sia cambiato drasticamente in sdk internals :(
grazie, farò sicuramente un tentativo e postare qui se aiuta. comunque mi sembra un bug per me (cose non migliori con la nuova versione 5.0.1) e lo lancerò presto ad Apple – IPv6
Quindi, l'hai già provato?Ha funzionato anche con te? - Ho fatto qualche altro test che ha confermato che aveva a che fare con la lettura del PNG dal disco. In realtà, a giudicare da un'altra traccia di Time Profiler che ho fatto la parte più grossa del tempo, iOS5 si perde durante la creazione della classe di metadati per il PNG che viene letto. – Martin
fantastico! Sì, questo aiuta molto, grazie! e hai ragione - sembra che i metadati siano responsabili di queste crassi (sia per jpeg che per png). dopo aver salvato tutti i PNG e JPEG senza che i metadati siano abilitati, tutti hanno iniziato a funzionare come al solito - le immagini si stanno caricando in 30 ms. sembra che gli SDK ios precedenti alla 5.0 abbiano semplicemente ignorato i metadati png/jpeg – IPv6