【发布时间】:2012-10-31 05:23:11
【问题描述】:
我有一个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 的方法?
【问题讨论】:
标签: objective-c ios parameter-passing pass-by-reference