0

这应该在我的任何给定表格行中显示一个占位符,除非存在该索引路径的图像。当我向下滚动时,前一个 indexPath 中的图像会加载默认值而不是释放。我知道以前有人帮助我解决了同样的问题,但这是在我意识到缓存图像的重要性之前。在我的 customCell 方法中,我将 UIImage 属性设置为 strong,并为 viewDidUnload 释放图像。

NSString *imagename = [_imageCache objectForKey:indexPath];
UIImage *preview = [_imageCache objectForKey:imagename];

if (preview)
{
    [[cell myImageView] setImage:preview];
}
else
{
    [[cell myImageView] setImage:[UIImage imageNamed:@"CellLogo.png"]];

            dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
            dispatch_async(queue, ^{

             //   __block UIImage *preview = nil;               
               UIImage *preview = [UIImage imageWithData:object.iG];
              //             }
         if (preview)
         {
                dispatch_async(dispatch_get_main_queue(), ^{

                 //   if (cell)
                    [[cell myImageView] setImage:preview];

                });
             [_imageCache setObject:preview forKey:imagename];
         }
            });
}
4

2 回答 2

1

正如错误消息所述,您尚未imageFilename:在代码中的任何地方声明。默认情况下没有这样的方法,如果您希望可以在当前类中以该名称定义方法:

- (NSString *)imageFilename:(NSIndexpath *)indexpath {
  //code here
}

如果您已经在其他地方使用过它,则需要导入该特定类并调用此方法,因为该类的对象NSString *imagename = [myobject imageFilename:indexPath];在哪里。myobject

于 2013-02-22T18:04:43.420 回答
1

查找“单元重用”。您需要在 UITableViewCell 子类中实现 -prepareForReuse。它应该将图像重置为占位符或空白图像。

于 2013-02-22T19:18:07.490 回答