2010-02-18 19 views
0

iPhone 3.0支持核心數據,它似乎是開發人員的一個很好的工具。但是SQL語句似乎更容易啓動,但核心數據更容易維護數據庫。但是我正在考慮SQL語句,因爲它似乎有更好的性能。我認爲哪一個更適合iPhone開發,有什麼建議?核心數據VS SQL語句,哪一個是用於iphone開發的gd?

+0

這是http://stackoverflow.com/questions/523482/core-data-vs-sqlite3的重複,並可能http://stackoverflow.com/questions/840634/core-data-vs-sqlite- for-sql-experienced-developers和http://stackoverflow.com/questions/1045238/core-data-vs-sqlite-and-performance – 2010-02-18 20:12:29

回答

6

答案實際上比任何一篇博客文章都要簡單得多。規則是:

  1. 如果您正在開發任何OS X平臺;
  2. 如果您未訪問專有格式;和
  3. 如果你的持久性文件,並不需要在非OS-X平臺

閱讀那麼需要核心數據去。這很簡單。與直接SQL相比,核心數據爲您提供瞭如此多的功能和易用性,使選擇變得簡單。就表現而言,那是一條紅鯡魚。在哪裏,Core Data可以輕鬆地執行訪問SQLite數據庫的自定義代碼。不過,Cocoa Touch的表現其實是次要的擔憂。

主要關心的是記憶。你有一小部分內存可以在Cocoa Touch上使用,你的數據模型可以輕鬆地解決這個問題。核心數據解決了這個問題。它會監視它正在使用多少內存,並且會在收到內存警告時自動從內存中丟棄對象。如果您直接使用SQLite,那麼所有這些相當複雜的代碼都必須自己編寫。

更少的時間編碼您的數據模型意味着您有更多的時間使您的應用程序更好。

+0

我的期望是,SQLite將*總是*使用比核心數據更少的內存,甚至核心數據的內存警告後。 SQLite的頁面緩衝區與任何一種技術都在內存中,但SQLite不會在RAM中存儲任何其他對象。這是不是真的? – 2010-02-18 17:00:29

+0

您正在考慮SQLite庫。但是你有SQLite庫的數據結構,這些都是訣竅。使用SQLite,您必須自己管理這些內存,監視內存,處理緩存等等。所有這些都非常複雜,並且很容易出錯。即使你正確地做到了這一點,最終你最終會模仿Core Data。更輕鬆快捷地與原版一起使用,並獲得免費升級。 – 2010-02-18 17:14:17

+3

這是違反直覺的,但像批量提取(使用核心數據中的一行代碼)可以導致巨大的內存和性能的勝利。這需要很多代碼才能用SQLite重現這一點。如果Apple已將他們的設備上應用程序切換到Core Data over SQLite,您就知道必須具備性能優勢。 – 2010-02-19 14:15:20