2016-02-12 42 views
2

我編寫了一個與BLE設備接口的iOS應用程序 - BLE設備發送iOS設備數據,然後應用程序分析數據並保存。 iOS應用程序每秒接收一次數據,因此我保存讀數的陣列(如NSString)變得非常快。在iOS上保存大型數組的最佳方法

該應用的在後臺工作,直到這一點我一直在使用NSUserDefaults保存這個大陣。我在我的應用程序上做了一個跟蹤,發現它在背景中使用了iPhone 6的CPU的3%,並發現NSUserDefaults正在造成這種情況。我讀了它,看到NSUserDefaults是如何效率低下的。

現在,我想從這種方法轉換,並使用不同的東西。我已經閱讀了一些這樣的方法,比如將數據保存到CoreData,Plists或純文本文件中。這種方法有多高效和易於實現?我之前使用過一個文本文件做了一些事情,這很容易,但是我經常需要將該文本文件的全部內容加載到數組中進行分析,這似乎是內存問題。所以,如果你有任何建議,我很樂意聽到他們。

回答

2

尋找到Apple Performance Tips,我找到了你的問題。

總之:在寫入磁盤之前獲取大量數據,以最大限度地減少使用Core Data或SQLite訪問閃存驅動器。

您可以檢查如何實現一個SQLite持久性this link


提高你的文件管理 - 性能提示

最小化數據的您寫入磁盤的數量。文件操作是 相對較慢,並涉及到閃存驅動器的寫入,該閃存驅動器具有限制使用壽命的 。一些具體的技巧來幫助你減小文件相關 操作包括:

  • 如果您的數據包含在隨機訪問的結構化內容,特別是在量,將其存儲在覈心數據持久性存儲或者一個SQLite 數據庫您正在操作的數據可能會增長到超過幾兆字節。
+0

我檢查了這一點,謝謝。 –

+0

謝謝,這工作得很好。後臺CPU使用率降至<1%。 CoreBluetooth現在使用最多的CPU功率 –

相關問題