我是第一次在iOS上编写一些sqlite3代码。每次我尝试关闭与sqlite3_close_v2(db)
的sqlite3数据库连接,其中db
是从sqlite3 *
调用获得的sqlite2_open_v2
时,应用程序崩溃,没有有用的控制台输出或其他信息但仅限于实际设备 - 它不会在模拟器中崩溃。
这是一个代码示例:
sqlite3_stmt *statement = NULL;
int returnCode = 0;
if((returnCode = sqlite3_prepare_v2(db, [query UTF8String], (int)strlen([query UTF8String])+1, &statement, NULL)) != SQLITE_OK || statement == NULL) {
Log(@"Failed to create query. code:%d",returnCode);
sqlite3_close_v2(db);
}
当我传递错误的查询时,代码将在if
语句的最后一行崩溃。代码不会在模拟器上崩溃,但它会在iOS 8 iPad和iOS 7 iPod上崩溃。
崩溃是这样报告的(顺便说一句,这不是我自己的断点):
dyld`dyld_fatal_error:
-> 0x1200e5088 <+0>: brk #0x3
断点指示器表示崩溃为Thread 1: EXC_BREAKPOINT (code=1, subcode=0x1200e5088)
。
任何人都可以帮我调试吗?我花了很多时间在谷歌上搜索无济于事。目前,我只是使用sqlite3_close(db)
,因为这不会崩溃,但我担心使用v2
open
方法导致的任何后果非v2
close
方法......
编辑2016年6月:从来没有得到过这方面的答案,我只是坚持使用sqlite3_close
方法,以防万一有人在想。据我所知,它没有引起任何问题......