使用以下代码插入到我的SQLite数据库中,我的日志中出现了两次崩溃 - 代码大部分时间都运行良好,但显然存在导致崩溃的错误。
它在sqlite3_last_insert_rowid或sqlite3_close上崩溃,EXC_BAD_ACCESS(我持有对 SMSDatabase 的引用,它在一个单例中,不确定为什么会被解除分配)和 SIGABRT(内存问题?
- (NSInteger)query:(NSString *)query {
NSInteger lastRowID = 0;
if (sqlite3_open([self.databasePath UTF8String], &smsDatabase) == SQLITE_OK)
{
sqlite3_stmt *statement = nil;
const char *sql = [query UTF8String];
if (sqlite3_prepare_v2(smsDatabase, sql, -1, &statement, NULL) == SQLITE_OK) {
if (sqlite3_step(statement) == SQLITE_DONE)
{
lastRowID = sqlite3_last_insert_rowid(smsDatabase);
}
}
sqlite3_finalize(statement);
}
sqlite3_close(smsDatabase);
return lastRowID;
}
我哪里出错了?
sqlite3_close(smsDatabase); - 这不是在你的if语句之外吗,这意味着你正在关闭一个可能从未打开过的数据库?