2013-01-04 30 views
1

我有一些旧的32位非ARC框架(预编译,我无法访问源代码)试图纳入一个新项目。该项目的基础很好,但是当我试图运行单元测试我收到以下错误:Objective-C运行时信息与测试设备所需的运行时信息不匹配

The test bundle at [...]MappingKitTests.octest could not be loaded because its Objective-C runtime information does not match the runtime information required by the test rig. This is likely because the test rig is being run with Objective-C garbage collection disabled, but the test bundle requires Objective-C garbage collection. To enable Objective-C garbage collection for the test rig, run it in an environment without the OBJC_DISABLE_GC environment variable.

我的新项目和单元测试32位,非ARC,所以这个错误并没有多大感觉到我。

项目和框架是否必须使用相同版本的OS X SDK构建?这是我能想到的唯一的事情。框架是用10.6 SDK构建的,我的新项目是用10.8 SDK构建的。

回答

0

我想通了。我在垃圾收集(GC)和自动引用计数(ARC)之间感到困惑。这个错误特指GC。

添加用户定义的版本设置GCC_ENABLE_OBJC_GC =不支持纠正了该问题。

+0

对我来说,问题不是与GC有关;它起源于我的框架,它包装了一个C++库。这个问题最终导致C++标准库C++库(使用make)与框架和单元测试包目标(Xcode)不匹配。一旦我确定他们都使用相同的C++库,错误消失了。 –