【发布时间】:2012-11-16 22:06:09
【问题描述】:
我是 iOS 和 Cocoa 的新手。我的问题不是关于如何让某件事情发挥作用,而是更多关于改进用户体验和性能的设计。
我正在向现有应用添加功能。目前,该应用程序有一个类“RootViewController”(RVC),负责发出服务器请求。 RVC 调用服务器以获取 json 响应。这个 json 响应被解析,解析后的响应被一个名为“array”的 NSArray 对象引用。服务器提供给“array”的数据必须定期更新,因为它代表了其他客户可以购买的实时库存。
我需要在应用程序生命周期的不同时间在其他类中使用对“数组”的引用。我不想每次想使用或更新“数组”时都调用服务器。在我自己的设备上测试这个应用程序时,调用服务器似乎很慢 -> 会损害应用程序的性能。
我考虑过创建一个可以充当委托的类来保持对 NSArray 的引用 - 有点像全局变量。我会向服务器发出一个异步请求,并跟上这个委托类中的响应。我不确定如何确定这种方法是否有效或是否考虑最佳实践(考虑到 MVC)。
我正在寻找存储“数组”的最佳位置,以便其他类可以快速使用它,而无需过多依赖网络或内存使用情况。 “阵列”必须能够偶尔从服务器更新(因为“模型”可能会因库存变化而改变)。根据我的研究,iOS 的 CoreData 似乎是最好的起点,但如果应用程序不活跃,我不确定如何定期更新 CoreData。换句话说,如果 CoreData 中的数据最近没有更新,我不想向用户呈现陈旧的数据。
json 响应大小约为 20KB - 45KB。
存放轻量级对象以便定期更新的最佳/替代位置在哪里?我倾向于会话样式变量,但我不知道是否有更好的方法来做到这一点。
【问题讨论】:
-
首先,我怀疑这是 瓶颈。如果您是初学者,您的代码质量可能会比 CoreData 与 plist 的使用更能影响性能。
标签: iphone ios cocoa ios5 core-data