最多的iOS 3.2,我用這種代碼在後臺加載UIImageView
圖像,它工作得很好......的iOS4及背景的UIImage setImage:]
代碼:
- (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:]
,它應該已經解碼了圖像數據),導致我的主線程暫停。 。即使文檔說底層圖像緩存在所有線程之間共享。。
有沒有想法?
您好,感謝您提出這個問題。我想知道爲什麼它現在不適用於我的應用程序。 – GeneCode 2013-03-27 14:26:22