Ios 单元格中的获取图像(PFFile)正在阻止滚动
我有一个与Parse连接的应用程序,在显示带有UIImageView的自定义单元格的表视图时遇到问题。第一次尝试下载照片时,UI停止响应约1-2秒 问题似乎出在UIImage*image=[UIImage imageWithData:data];它不在主队列上,但仍然阻塞UI 怎么了 我使用的代码是:Ios 单元格中的获取图像(PFFile)正在阻止滚动,ios,uitableview,parse-platform,Ios,Uitableview,Parse Platform,我有一个与Parse连接的应用程序,在显示带有UIImageView的自定义单元格的表视图时遇到问题。第一次尝试下载照片时,UI停止响应约1-2秒 问题似乎出在UIImage*image=[UIImage imageWithData:data];它不在主队列上,但仍然阻塞UI 怎么了 我使用的代码是: -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexP
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyEvent *currentEvent = self.tableViewElements[indexPath.section][indexPath.row]; //class that stores event details without UIImages. UIImages are stored in a NSMutableDictionary
NSDate *currentDate = currentEvent.dateStart;
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:currentDate];
InvitationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"InvitationTableViewCell"];
cell.eventImageView.tag = indexPath.row;
cell.eventImageView.image = nil;
cell.eventNameLabel.text = currentEvent.name;
cell.eventDayLabel.text = [NSString stringWithFormat:@"%d", [components day]];
cell.eventMonthLabel.text = monthsNameArray[[components month] -1];
if ([[AppModel sharedModel].myEventsImagesDictionary objectForKey:currentEvent.eventId])
{
UIImage *image = [[AppModel sharedModel].myEventsImagesDictionary objectForKey:currentEvent.eventId];
cell.eventImageView.image = image;
}
else
if (currentEvent.pictureFile)
{
dispatch_queue_t downloadQueue = dispatch_queue_create("Image Downloader", NULL);
dispatch_async(downloadQueue, ^{
//currentEvent.pictureFile is a PFFile
[currentEvent.pictureFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
if (cell.eventImageView.tag == indexPath.row)
{
UIImage *image = [UIImage imageWithData: data];
UIImage *croppedImage = [Utility cropImage:image toFitInSize:CGSizeMake(320.0, 90.0)];
image = nil;
[[AppModel sharedModel].myEventsImagesDictionary setObject:croppedImage forKey: currentEvent.eventId];
dispatch_async(dispatch_get_main_queue(), ^{
if (croppedImage)
{
cell.eventImageView.image = croppedImage;
}
});
}
}
}];
});
}
return cell;
}
请检查这个。我的图片文件在Parse.com上,我没有链接到它们的url。