我正在使用一个iOS应用程序,该应用程序使用REST API连接到后端服务器以检索配置数据。配置数据以JSON格式接收,并最终使用NSUserDefaults在本地保留。一条配置数据的一般流程如下:
配置数据是相当静态的(随时间变化不大),但应用程序确实需要经常刷新(即30分钟)。到目前为止,方法是每次都仅转储和替换本地数据,而不是尝试实施需要完全重新设计的增量更新。
只要配置数据很小,此方法似乎就可以正常工作。但是,最近我们看到JSON大于20MB的配置数据。在这些情况下,上面概述的方法不起作用,因为它似乎需要太多内存才能进行端到端处理。在“ xcode性能”标签中,该应用的内存峰值超过500MB,并且该过程通常会崩溃,至少在较旧的设备(例如iPhone 6)上会崩溃。
在开始重新设计整个过程之前,我想知道是否还有更多的优化方法可以仍然允许转储和替换,但占用的内存更少。如果需要映射,从HTTP响应到某种持久存储是否存在更有效的方法?核心数据是否非常适合转储和替换方法?我没有考虑。
答案 0 :(得分:0)
如果主要考虑内存,则可以看看https://github.com/stig/json-framework,它使您能够以“块式”方式进行解析,因此您无需随时将整个JSON文档存储在内存中。
答案 1 :(得分:0)
我认为将数据保存到CoreData或SQLight是一个好主意,而不是保存到userdefaults。这可能会解决您的问题,因为并非所有数据都已加载到内存中以供访问。