UITableView
画像付きのセルを表示する があります。メソッドで、cellForRowAtIndexPath
接続を開始して画像をフェッチします。同じ画像を複数回リクエストすることを避けるために、どの画像がすでにリクエストされているかを追跡したいと考えています。
私はこのような方法を設定しました
+(void) setImageFromURL:(NSURL*) url fromImage:(UIImage*) srcImage to:(UIImageView*) dstImage wasRequested:(BOOL*) requested;
そしてそれをこのように呼びます
[Utils setImageFromURL:event.thumbURL fromImage:event.thumbImage to:cell.image wasRequested:event.thumbRequested];
ここで、event.thumbRequested は BOOL プロパティです。メソッドは次のようになります
+(void) setImageFromURL:(NSURL*) url fromImage:(UIImage*) srcImage to:(UIImageView*) dstImage wasRequested:(BOOL*) requested{
if (srcImage != nil) {
dstImage.image = srcImage;
} else if (!requested) {
requested = YES;
@try {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData * data = [[NSData alloc] initWithContentsOfURL: url];
if ( data == nil )
return;
dispatch_async(dispatch_get_main_queue(), ^{
__block UIImage* srcImage = [UIImage imageWithData: data];
dstImage.image = srcImage;
});
[data release];
});
}
@catch (NSException *exception) {
NSLog(exception.debugDescription);
}
}
}
私の問題は、 のBOOL
値渡し動作のために が変化しないことObjective-C
です。BOOL
メソッド内からイベント オブジェクト内を更新できる方法を推奨できる人はいますか?