Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c xCode 4.5 sqlite3\u在objc\u storeStrong中打开EXC\u坏访问_Objective C_Xcode - Fatal编程技术网

Objective c xCode 4.5 sqlite3\u在objc\u storeStrong中打开EXC\u坏访问

Objective c xCode 4.5 sqlite3\u在objc\u storeStrong中打开EXC\u坏访问,objective-c,xcode,Objective C,Xcode,此代码段来自当前在应用商店中的iPad应用程序,使用ARC编写。该代码使用xCode 4.4.1(4F1003)开发,并在IOS模拟器5.1(272.21)中正常运行。我最近安装了xCode 4.5和IOS Simulator 6.0,现在当sqlite3\u open返回到我的目标C代码时,我获得了EXC\u BAD\u访问权限(代码=2,地址=0x200) sqlite3 *tempDatabase; const char *sqlStatement = [s_DBEngineDBName

此代码段来自当前在应用商店中的iPad应用程序,使用ARC编写。该代码使用xCode 4.4.1(4F1003)开发,并在IOS模拟器5.1(272.21)中正常运行。我最近安装了xCode 4.5和IOS Simulator 6.0,现在当sqlite3\u open返回到我的目标C代码时,我获得了EXC\u BAD\u访问权限(代码=2,地址=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

如上所述,在执行最终的return语句之前,通过SQLite代码一步一步地工作,一切都按预期进行。我不明白为什么objc_storeStrong会牵涉其中。

我追踪到了包含文件中的转发声明: @类sqlite3; 这显然是错误的,因为sqlite3是一个结构。这导致ARC尝试并引用count it,这就是引发异常的原因

删除该行会导致编译错误,通过在sqlite3的使用前面加上关键字“struct”,可以很容易地解决这些错误


感谢您的建议,因为他们让我深入挖掘,并意识到编译器认为sqlite3是一个类,而实际上它不是。

sqlStatement的价值是什么?完整的调用堆栈是什么?
objc\u storeString
的参数是什么?打开zombies,看看它是否捕捉到任何东西。类名是什么?