2013-01-04 34 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++庫,錯誤消失了。 –