我正在使用json数据在UITableview
中显示图像并获取图像。但数据显示在UITablevewcells
中。但图像并没有显示出来。显示图像需要时间。所以我想使用GCD异步显示我的uitableview的图像。但我不知道异步GCD Concept.Please让我知道如何在我的编码中应用异步GCD概念。请给我指导任何身体。
这是我的代码。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[UIApplication sharedApplication].networkActivityIndicatorVisible=YES;
NSError *err;
NSString *strResponse=[[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"response is %@",strResponse);
dit=[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:&err];
NSArray *arrResults = [dit valueForKey:@"classifieds_mst"];
listOfObjects = [NSMutableArray array];
for(dictRes in arrResults) {
Attributes *at = [[Attributes alloc]init];
at.classimage=[dictRes valueForKey:@"image_name"];
[listOfObjects addObject:at];
}
[tableView reloadData];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier=@"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"identifier"];
}
classifiedimage=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 300, 80)];
[cell.contentView addSubview:classifiedimage];
NSString *str;
str=att.classimage;
if(str==nil) {
classifiedimage.image=[UIImage imageNamed:@"image.png"];
} else{
url=@"My url";
NSString *addurl=[url stringByAppendingString:str];
classifiedimage.image = [UIImage imageNamed:addurl];
}
return cell;
}
答案 0 :(得分:1)
你可以尝试这个,在cellForRowAtIndexPath方法中异步加载图像,这里我得到图像的url并使用延迟加载。
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSString *imageStr=[@"urlLink" stringByAppendingString:[populerPostImageArray objectAtIndex:indexPath.row]];
[cell.myImgView setImageWithURL:[NSURL URLWithString:imageStr] placeholderImage:[UIImage imageNamed:@"nopic.png"]];
});
});
答案 1 :(得分:0)
您可以使用延迟加载概念来加载图像。请参阅以下链接:https://github.com/rs/SDWebImage
答案 2 :(得分:0)
如果您需要加载和缓存图片,可以使用APSmartStorage。 它支持下载,内存和磁盘缓存,并自动清除内存警告。 像魅力一样工作:)