这里是功能实现:
typedef void (^GCDBlock2_Obj_Obj) (id object1, id object2);
@implementation GCDHelper
- (void) gcdImageWithURLString:(NSString *) URLString completion:(GCDBlock2_Obj_Obj) completion
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:URLString]];
[request setHTTPMethod:@"GET"];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request
returningResponse:nil
error:nil];
[request release];
UIImage *image = [UIImage imageWithData:returnData];
if (image)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
completion(image, URLString);
});
} else
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
completion(defaultImage, URLString);
});
}
});
}
@end
//这里是使用方法
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
// http://localhost:8888/Imgs/img0.png
// http://theme.blogcn.com/wp-content/themes/coffee-desk/images/rsscoffee.PNG
NSString *imgURLStr = nil;
if ((indexPath.row % 2) == 0)
{
imgURLStr = @"http://localhost:8888/Imgs/img0.png";
} else
{
imgURLStr = @"http://localhost:8888/Imgs/img1.png";
}
GCDHelper *hp = [GCDHelper new];
[hp gcdImageWithURLString:imgURLStr
completion:^(id object1, id object2) {
dispatch_async(dispatch_get_main_queue(), ^{
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[(UIImageView *)[cell viewWithTag:10] setImage:(UIImage *)object1];
});
}];
}