Iphone 带图像滞后的UITableViewCell

Iphone 带图像滞后的UITableViewCell,iphone,ios,xcode,uitableview,uiimage,Iphone,Ios,Xcode,Uitableview,Uiimage,伙计们,我有一些图片,是从互联网加载的UITableView。图像非常少,但我的tableview不是完美的。 我的代码: TDBadgedCell不能成为理由,因为没有图像,它工作得非常完美。 我正在使用OpenSourse类调整UIImage的大小。你可以找到它 你有什么想法吗?你可以在另一个线程中完成图像下载部分,这样它就不会阻塞主线程。您可以这样做: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFA

伙计们,我有一些图片,是从互联网加载的UITableView。图像非常少,但我的tableview不是完美的。 我的代码:

TDBadgedCell不能成为理由,因为没有图像,它工作得非常完美。 我正在使用OpenSourse类调整UIImage的大小。你可以找到它


你有什么想法吗?

你可以在另一个线程中完成图像下载部分,这样它就不会阻塞主线程。您可以这样做:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul), ^{
    // download the images here

    dispatch_async(dispatch_get_main_queue(), ^{
     // add them to your cell here

    });
});

因此,您需要切换到另一个线程进行下载,然后返回主线程并将它们添加到UI中。UI元素只能在主线程中处理。

我已经发布了代码,向您展示了如何处理此问题。我们有一个MyImageDownloader类,可根据请求下载图像,并在图像到达时发布通知:

如果MyImageDownloader没有图像,则表视图数据源提供占位符,如果有图像,则提供图像:


因此,我们所要做的就是在图像到达时重新加载表。m、

您是否尝试过使用应用捆绑包中的图像查看它是图像还是下载图像?我制作了它,但图像仅可见,然后我正在触摸手机。我的代码:加载:
UIImage*img=[[UIImage-imageWithData:[NSData-dataWithContentsOfURL:[NSURL-URLWithString:[dict-objectForKey:@“image”]]]]scaleToFitSize:CGSizeMake(16,16)]添加到单元格:
cell.imageView.image=img不在主线程中处理UIImage可能会导致意外问题。苹果强烈建议不要这样做。您可以将图像数据存储在非UI组件的数据结构中。我尝试先加载NSData,然后在主线程中生成图像,但结果是一样的。您可以尝试这样做,它可能对您更适合。。。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul), ^{
    // download the images here

    dispatch_async(dispatch_get_main_queue(), ^{
     // add them to your cell here

    });
});