我有一个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
从方法内部更新事件对象的方法?