我写了一个与BLE设备接口的iOS应用程序--BLE设备发送iOS设备数据,应用程序分析数据然后保存。 iOS应用程序每秒都会收到数据,因此我保存读数的数组(NSString
)会很快变大。
该应用程序可以在后台运行,直到此时我一直在使用NSUserDefaults
来保存这个大型数组。我对我的应用程序进行了跟踪,发现它在后台使用了3%的iPhone 6 CPU,并发现NSUserDefaults导致了这一点。我阅读了它并看到了NSUserDefaults
效率低下的目的。
现在,我想从这种方法转变并使用不同的东西。我已经阅读了一些这样的方法,比如将数据保存到CoreData,Plists或纯文本文件中。这种方法的效率和易用性如何?我以前用文本文件做过事情,这很简单,但我经常需要获取该文本文件的全部内容并将其加载到数组中进行解析,这似乎对内存有问题。所以,如果你有任何建议,我很乐意听到。
答案 0 :(得分:2)
查看Apple Performance Tips,我发现了一些问题。
简而言之:在写入磁盘之前获取大量数据,以最大限度地减少使用Core Data或SQLite对闪存驱动器的访问。
您可以在this link
中查看如何实现SQLite持久性改善文件管理 - 效果提示
尽量减少写入磁盘的数据量。文件操作是 相对较慢并涉及写入闪存驱动器,其中有一个 寿命有限。一些特定的技巧可以帮助您最小化与文件相关 运营包括:
- 如果您的数据由随机访问的结构化内容组成,请将其存储在Core Data持久性存储或SQLite中 数据库,特别是如果您正在操作的数据量可以 增长到超过几兆字节。