何时在iOS应用中使用sqlite3_close

时间:2016-02-10 13:40:04

标签: ios sqlite

我在我的iOS游戏中使用Sqlite 3来持续/加载他们完成的每项任务的用户分数(我获得了超过4k的任务)。我的需要非常基本;我只有一个sqlite表,我在启动时将所有分数加载并缓存到内存中(在最坏的情况下内存占用量不超过130k),然后我执行一个简单的更新/插入数据库,频率为一次/ 5分钟。

我的问题:

  • 我应该sqlite3_open()sqlite3_close()每个交易的数据库,或者在启动时打开它并保持生效以仅在应用终止时关闭它?
  • 保持数据库打开是否会产生大量内存成本?
  • 如果在数据库打开时应用程序崩溃,是否存在损坏数据的风险?

1 个答案:

答案 0 :(得分:1)

  1. 当应用程序进入前台时打开数据库,并在应用程序进入后台时关闭它(这与启动/关闭不同)。还可以在获取数据库句柄的方法中构建重新打开逻辑,这样您就可以随时关闭它(即内存警告),并且当您下次要使用它时它将始终尝试重新打开。您似乎已经发现您不想为要执行的每个查询打开/关闭数据库,因为它的价格稍贵。
  2. 不是真的;但是,与小图像的大小相比,没什么。一个或两个文件句柄,一些缓存内存。别担心。
  3. 是。您可以使用交易来降低风险,但除非您真的担心腐败,否则这不应该是必要的。