До iOS 3.2, я использовал этот вид кода для загрузки UIImageView
изображения в фоновом режиме, и он работал нормально ...
Код:
- (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"]
...даже если [UIImageView setImage:]
не был поточно-ориентированным!
Но, начиная с iOS 4, он больше не работает ... Изображения появляются на экране через две секунды после вызова setImage
.И если я сделаю [myImageView performSelectorOnMainThread:@selector(setImage:) withObject:newImage waitUntilDone:YES]
вместо [myImageView setImage:newImage]
, изображения появятся немедленно, но, похоже, будут заново декодированы на лету (игнорируя предыдущий [UIImage imageNamed:]
, который должен был уже декодировать данные изображения), вызывая паузув моем главном потоке ... Даже если в документации написано Базовый кеш изображений используется всеми потоками. .
Есть мысли?