- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
[NSThread detachNewThreadSelector:@selector(startImageread:) toTarget:self withObject:indexPath];
}
startImageread是获取照片的方法,我是从本地读取的
-(void)startImageread:(NSIndexPath *)indexPath
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSInteger row = [indexPath row];
NSDictionary *imageNameDictionary = [self.DataArray objectAtIndex:[DataArray count]-row-1];
NSString *readImageaname=[imageNameDictionary objectForKey:@"objectTimedata"];
//NSLog(@"SaveData%@",imageNameDictionary);
//NSLog(readImageaname);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
if (!documentsDirectory) {
NSLog(@"Documents directory not found!");
}
NSString *Data2File = [documentsDirectory stringByAppendingPathComponent:readImageaname];
UIImage *newimage=[UIImage imageWithContentsOfFile:Data2File];//读取的图片
//UIImage *newimage=[[UIImage alloc] initWithContentsOfFile:Data2File];
//printf("startImageread****indexPath:%d\r\n",row);
NSDictionary *cellimage = [NSDictionary dictionaryWithObjectsAndKeys:
indexPath, @"indexPathdtat",
newimage,@"image",
nil];
//[NSThread sleepForTimeInterval:3];//不能让线程睡否则太慢了
[self performSelectorOnMainThread:@selector(_setOCellImage:) withObject:cellimage waitUntilDone:YES];
[pool release];
}
_setOCellImage是缓存刷新cell的图像
这里需要传递两个参数一个是indexPath 一个是图片newimage但是performSelectorOnMainThread只能带一个参数
这个问题困扰我半天,于是我把indexPath和newimage放到一个数组NSDictionary *cellimage传过来的
-(void)_setOCellImage:( id )celldata
{
UIImage *newimage=[celldata objectForKey:@"image"];//从参数celldata里面拿出来图片
[self.DataTable cellForRowAtIndexPath:[celldata objectForKey:@"indexPathdtat"]].imageView.image=newimage;
}