我正在构建的一个应用程序使用 SQLite 来存储从服务器下载的数据。
应用程序本身使用多线程,因此应用程序启动时,应用程序在后台下载数据,同时还将 UI 呈现给用户。
此时用户可以开始导航应用程序,点击表格行以深入了解详细信息页面。
有时,当我点击表格行时,应用程序会在许多 sqlite3_prepare_v2() 函数调用之一中崩溃。当我为我的 NSOperationQueue 允许超过 1 个最大并发操作时,这种情况发生得更加频繁。但是,由于我已将最大并发操作数限制为 1,因此发生的情况要少得多。
当我的应用程序启动时,我正在打开一个数据库连接并保持它打开,直到应用程序需要终止,然后我关闭连接。
这是它崩溃的示例行:
if(sqlite3_prepare_v2(objDatabase, [strGet cStringUsingEncoding:NSUTF8StringEncoding], -1, &stmtGet, NULL) == SQLITE_OK)
{
...
}
错误说 EXEC_BAD_ACCESS
就像 20 次中的 1 次或 30 次中的 1 次应用程序运行一样,它会崩溃。这意味着我的 SQL 语句在 99% 的时间里都有效。
以前有人遇到过这种情况吗?