sqlite3_close_v2在iOS上崩溃,sqlite3_close没有

时间:2015-08-05 00:07:09

标签: ios objective-c iphone sqlite

我是第一次在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)

Thread crash log

任何人都可以帮我调试吗?我花了很多时间在谷歌上搜索无济于事。目前,我只是使用sqlite3_close(db),因为这不会崩溃,但我担心使用v2 open方法导致的任何后果非v2 close方法......

编辑2016年6月:从来没有得到过这方面的答案,我只是坚持使用sqlite3_close方法,以防万一有人在想。据我所知,它没有引起任何问题......

0 个答案:

没有答案