Fino a iOS 3.2, ho usato questo tipo di codice per caricare un'immagine UIImageView
in background, e ha funzionato bene ...iOS4 e sfondo [UIImage setImage:]
Codice:
- (void)decodeImageName:(NSString *)name
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIImage *newImage = [UIImage imageNamed:name];
[myImageView setImage:newImage];
[pool release];
}
...
[self performSelectorInBackground:@selector(decodeImageName:) withObject:@"ID"]
. .. anche se [UIImageView setImage:]
non era thread-safe!
Ma da iOS 4, non funziona più ... Le immagini vengono visualizzate sullo schermo due secondi dopo la chiamata setImage
. E se faccio un [myImageView performSelectorOnMainThread:@selector(setImage:) withObject:newImage waitUntilDone:YES]
invece di [myImageView setImage:newImage]
, le immagini appaiono immediatamente ma sembrano essere nuovamente decodificate al volo (ignorando il precedente [UIImage imageNamed:]
che avrebbe dovuto già decodificare i dati dell'immagine), causando una pausa sul mio thread principale .. Anche se la documentazione dice La cache dell'immagine sottostante è condivisa tra tutti i thread..
Qualche idea?
Ciao, grazie per avermi fatto questa domanda.Mi stavo chiedendo perché non funziona ora con la mia app. – GeneCode