【问题标题】:Objective-C runtime information does not match the runtime information required by the test rigObjective-C 运行时信息与测试台所需的运行时信息不匹配
【发布时间】:2013-01-04 00:03:31
【问题描述】:

我有几个旧的 32 位非 ARC 框架(预编译,我无权访问源代码)我正试图将其包含在一个新项目中。该项目构建良好,但是当我尝试运行单元测试时,我收到以下错误:

测试包位于 [...]MappingKitTests.octest 无法加载,因为它的 Objective-C 运行时信息确实 与测试台所需的运行时信息不匹配。这是 可能是因为测试台正在使用 Objective-C 垃圾运行 收集已禁用,但测试包需要 Objective-C 垃圾 收藏。为测试启用 Objective-C 垃圾收集 rig,在没有 OBJC_DISABLE_GC 环境的环境中运行它 变量。

我的新项目和单元测试是 32 位的,非 ARC,所以这个错误对我来说没有多大意义。

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

【问题讨论】:

    标签: xcode macos


    【解决方案1】:

    我想通了。我对垃圾收集 (GC) 和自动引用计数 (ARC) 感到困惑。此错误专门针对 GC。

    添加 GCC_ENABLE_OBJC_GC = unsupported 的用户定义构建设置更正了该问题。

    【讨论】:

    • 对我来说问题与 GC 无关;它出现在我的框架中,它包装了一个 C++ 库。问题最终是构建 C++ 库的 C++ 标准库(使用 make)与框架和单元测试包目标(Xcode)不匹配。一旦我确定他们都使用同一个 C++ 库,错误就消失了。
    猜你喜欢
    • 2011-02-17
    • 2010-11-27
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多