【问题标题】:Iphone application: Managing downloaded imagesIphone 应用程序:管理下载的图像
【发布时间】:2011-11-24 09:09:49
【问题描述】:

嗨,我目前正在尝试为 iphone 构建一个阅读器应用程序,有点像 NYTimes iphone 应用程序或时代杂志或 USA Today iphone 应用程序。基本上,我将解析包含文章的提要,将数据本地保存在数据库中并显示内容等等。

现在我刚刚开始开发 Iphone 应用程序,我想知道在这类应用程序中管理图像的最佳方法是什么。我想在本地保存每篇文章的图像。这是执行此操作的首选方法,将其保存到数据库或将其保存到文件系统。有很多图像,如果我将它们存储在数据库的 blob 字段中,管理它们会更容易,但我猜这会极大地影响性能。将它保存到文件系统中,在应用程序文档目录中会给我更好的性能,但我想知道如何管理大量文件(保存它,跟踪特定文章的图像,删除文件等)

【问题讨论】:

    标签: iphone objective-c cocoa-touch


    【解决方案1】:

    来自Core Data Programming Guide

    但是,如果您能够将 BLOB 作为资源存储在文件系统上,并维护到这些资源的链接(例如 URL 或路径),那就更好了。然后,您可以在必要时加载 BLOB。

    这个想法是延迟加载图像,仅当它们需要出现在屏幕上时。这在设备上非常重要。

    考虑一次有多少托管对象将在内存中。当对象被实例化时,如果您将图像保存为对象的一部分,它也会被加载到内存中并一直保留在内存中,直到对象变成故障为止。

    关于您问题的第二部分关于如何确保在删除托管对象时删除文件,注册NSManagedObjectContextObjectsDidChangeNotificationNSManagedObjectContextDidSaveNotification 并清理您可以从NSDeletedObjectsKey 中的对象获取的文件和NSUpdatedObjectsKey

    【讨论】:

      【解决方案2】:

      Core Data 可能是最适合您的解决方案。处理 FS(文件系统)会有点混乱。

      在 Apple 的文档中搜索 Core Data,您将获得所需的所有信息。

      【讨论】:

      • 同意,同样关于性能,我将一个项目从 FS 更改为 CoreData 用于媒体存储,我没有看到任何减速。
      【解决方案3】:

      NYTimes 应用程序将图像存储在文件系统:缓存文件夹中。

      对于大量图像,数据库可能比文件系统更混乱。文章图像也被认为是惰性的、可替换的数据。将大量它们存储在数据库中是不负责任的,因为您正在占用设备、用户计算机(备份)以及可能的 iCloud 上的永久磁盘空间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多