此代码片段来自 iPad 应用程序,该应用程序当前在应用程序商店中,并使用 ARC 编写。该代码使用 xCode 4.4.1 (4F1003) 开发并在 IOS Simulator 5.1 (272.21) 中正常运行。我最近安装了 xCode 4.5 和 IOS Simulator 6.0,当 sqlite3_open 返回到我的目标 C 代码时,我现在得到 EXC_BAD_ACCESS (code=2, address=0x200)。
sqlite3 *tempDatabase;
const char *sqlStatement = [s_DBEngineDBName UTF8String];
commandReturn = sqlite3_open(sqlStatement, &tempDatabase); // open main db
if(commandReturn == SQLITE_OK) {
// ...
}
我以前使用以下命令打开数据库,但在新环境中也失败了。
commandReturn = sqlite3_open([s_DBEngineDBName cStringUsingEncoding:NSStringEncodingConversionAllowLossy], &tempDatabase); // open main db
正如我上面所说的那样,通过 SQLite 代码,在最终的 return 语句执行之前,它都按预期工作。我对为什么甚至涉及 objc_storeStrong 感到困惑。