【问题标题】:iphone development: caching images with asyncimageview libraryiphone 开发:使用 asyncimageview 库缓存图像
【发布时间】:2013-06-07 17:34:26
【问题描述】:

在我的应用程序中,我使用 AsyncImageView 库来异步加载和显示图像,它还声称它缓存了图像。

图书馆可以在这里找到:https://github.com/nicklockwood/AsyncImageView

好吧,我有一个表格视图,它的行内有图像视图。感谢 asyncimageview 库,我可以成功地延迟加载图像,所以没有问题。但我对该库的缓存属性有疑问。

我对缓存的期望,例如,我第一次推送到具有我的 tableview 的视图控制器,它会延迟加载带有该库的图像。但是,当我从该视图返回并再次推送时,如果更改了注释,我认为它应该从缓存中检索图像。无需再次下载图像。但在这个库中,它会再次下载图像。我需要做一些额外的事情吗?或者根本不可能拥有这种缓存属性?

【问题讨论】:

    标签: iphone ios objective-c caching uiimageview


    【解决方案1】:

    我曾经使用过这个库。它将所有图像缓存到内存中,对我来说效果很好。

    加载/下载的图像缓存在内存中并自动 在出现内存警告时清理

    因此,除非您的应用收到内存警告,否则它应该在导航层次结构中来回切换后保留缓存的图像。如果您觉得库没有按照描述执行,您可以向开发人员提交错误报告/问题。

    【讨论】:

    • 例如我所做的是我用tableview打开了viewcontroller并加载了图像。然后我回去并断开与互联网的连接。之后,我再次推送到该视图控制器,但可以看到注释。如果被缓存了,应该可以看到了吧?
    • 是的,你是对的,如果它被缓存了,即使没有网络连接也应该看到它。您确定您没有加载导致内存警告和清除缓存的非常大的图像吗?
    • 好吧,你可以在你的 UIViewController 中实现 -(void)didReceiveMemoryWarning,或者在你的 UIApplicationDelegate 中实现 - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application。当您收到内存警告时,将调用此方法。
    • 首先我想说非常感谢您的关注:) 我没有收到任何内存警告。另外,我的图片一点也不大。
    【解决方案2】:

    我已经解决了这个问题:你需要添加

    #import "AsyncImageView.h"
    

    在你的文件 .m

    和使用

    NSURL *url = [NSURL URLWithString:yourUrlString];
    photo.imageURL = url; 
    

    或者举例

    cell.imageView.imageURL = url;
    

    不是

    UIImage *theImage = [UIImage imageWithData:imageData];
    photo.image = theImage;
    

    【讨论】:

      猜你喜欢
      • 2012-11-12
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多