私はNSMutableDictionaryにプロファイル画像を格納する画像キャッシュクラスを持っています。キーが存在する場合、キャッシュはUIImageオブジェクトを返し、そうでない場合はダウンロードし、辞書に格納してUIImageを返します。この共有キャッシュは、このようNSThreadedメソッドの内部で呼び出されます。UITableViewCell用スレッドの画像キャッシュ
[NSThread detachNewThreadSelector:@selector(setImageForUser:) toTarget:self withObject:imageUrlString];
-(void)setImageForUser:(NSString *)imageUrlString {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
LPImageCacher *imageCache = [LPImageCacher sharedCache];
UIImage *profileImg = [imageCache getCachedImageFromMemory:imageUrlString];
self.userProfileImageView.image = profileImg;
if (profileImg == nil) {
imageUrlString = [[myGlobals sharedInstance].avatarUrlDefault stringByAppendingString:@"/avatar.png"];
self.userProfileImageView.image = [imageCache getCachedImageFromMemory:imageUrlString];
}
[pool release];
}
問題で何がロードされる前に、彼らはのUITableViewをスクロールした場合、画像はバックログを取得して、最終的にすべてのイメージがロードされ、それらが点滅していることと変更それが正しいものになるまで、現在のセルに私は、各セルにNSThreadのインスタンスを作成し、-prepareForReuseのスレッドをキャンセルするのは良いと思っていましたが、NSThreadオブジェクトを再利用することはできません。