iphone移动加载网络图片
@interface AsyncImageView: UIView { NSURLConnection * connection; NSMutableData * data;}@end@implementation AsyncImageView- (void) loadImageFromURL: (NSURL * ) url { if (connection != nil) { [connection release]; } if (data != nil) { [data release]; } NSURLRequest * request = [NSURLRequest requestWithURL: url cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 60.0]; connection = [ [NSURLConnection alloc] initWithRequest: request delegate: self]; //TODO error handling, what if connection is nil?}- (void) connection: (NSURLConnection * ) theConnectiondidReceiveData: (NSData * ) incrementalData { if (data == nil) { data = [ [NSMutableData alloc] initWithCapacity: 2048]; }[data appendData: incrementalData];}- (void) connectionDidFinishLoading: (NSURLConnection * ) theConnection { [connection release]; connection = nil; if ([ [self subviews] count] & gt; 0) { [ [ [self subviews] objectAtIndex: 0] removeFromSuperview]; } UIImageView * imageView = [ [ [UIImageView alloc] initWithImage: [UIImage imageWithData: data]] autorelease]; imageView.contentMode = UIViewContentModeScaleAspectFit; imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth || UIViewAutoresizingFlexibleHeight); [self addSubview: imageView]; imageView.frame = self.bounds; [imageView setNeedsLayout]; [self setNeedsLayout]; [data release]; data = nil;}- (UIImage * ) image { UIImageView * iv = [ [self subviews] objectAtIndex: 0]; return [iv image];}- (void) dealloc { [connection cancel]; [connection release]; [data release]; [super dealloc];}@end- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"ImageCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; } else { AsyncImageView* oldImage = (AsyncImageView*) [cell.contentView viewWithTag:999]; [oldImage removeFromSuperview]; } CGRect frame; frame.size.width=75; frame.size.height=75; frame.origin.x=0; frame.origin.y=0; AsyncImageView* asyncImage = [[[AsyncImageView alloc] initWithFrame:frame] autorelease]; asyncImage.tag = 999; NSURL* url = [imageDownload thumbnailURLAtIndex:indexPath.row]; [asyncImage loadImageFromURL:url]; [cell.contentView addSubview:asyncImage]; return cell;}