Objective c 为什么nil检查表视图单元格属性会导致我的一个单元格复制另一个单元格?

Objective c 为什么nil检查表视图单元格属性会导致我的一个单元格复制另一个单元格?,objective-c,cocoa-touch,uitableview,Objective C,Cocoa Touch,Uitableview,“我的表视图”通过SDWebImage(UIImageView的异步图像下载/缓存类别)在每个表视图中加载图片:cellForIndexPath: // 'spot' is a dictionary of this cell's attributes NSURL* imageURL = [NSURL URLWithString:(NSString*)[spot objectForKey:@"Image"

“我的表视图”通过SDWebImage(UIImageView的异步图像下载/缓存类别)在每个
表视图中加载图片:cellForIndexPath:

                                               // 'spot' is a dictionary of this cell's attributes
NSURL* imageURL = [NSURL URLWithString:(NSString*)[spot objectForKey:@"Image"]];
UIImage* placeholderImage = [UIImage imageNamed:@"placeholder.png"];
^加载图像,但必须不断发出请求或从缓存中提取。所以我想看看渲染的单元格是否存储在内存中,所以我只能在需要时请求图像。为此,我添加了一个简单的检查image视图的image属性

if (!cell.pictureView.image)
{
    NSURL* imageURL = [NSURL URLWithString:(NSString*)[spot objectForKey:@"Image"]];
    UIImage* placeholderImage = [UIImage imageNamed:@"placeholder.png"];

    [cell.pictureView setImageWithURL:imageURL placeholderImage:placeholderImage options:SDWebImageCacheMemoryOnly];
}
这样可以在退出和重新进入应用程序后不必重新加载图像。但是,在我的一个单元格中,有一个故意损坏的图像url(用于调试),该图像(以前一直保持为
imageNamed:@“placeholder”
)现在与我的第二个单元格是相同的图像

我很好奇是什么样的单元重用/缓存魔法导致了该单元拍摄前一个单元的照片


保留单元格属性并仅在需要时设置它们的最佳方法是什么?

问题很可能在于您使用的图像包。如果您重复发出URL请求来抓取图像,那么实现NSURLCache可能是最佳实践,它相当简单,可以完美地处理缓存,因此不成问题。其他解决方案倾向于这类问题。因为它是UIImageView上的一个类别,所以在单元中使用时,可能会有许多事情导致UIImageView的实现出现问题