由于垃圾收集器禁用,无法运行 Cocoa UnitTests
Posted
技术标签:
【中文标题】由于垃圾收集器禁用,无法运行 Cocoa UnitTests【英文标题】:Can't run Cocoa UnitTests because of Garbage Collector disabling 【发布时间】:2010-08-26 14:44:30 【问题描述】:我正在尝试将一些单元测试添加到一堆 Cocoa Legacy 代码中。 我创建了一个单元测试包,并添加了所需的所有源代码和框架,但构建失败并显示以下消息:
2010-08-26 16:07:18.074 otest-x86_64[64675:903] 测试包位于 /Users/giordano/application/build/Release/UnitTest.octest 无法加载,因为其 Objective-C 运行时信息不匹配 测试台所需的运行时信息。这可能是因为 测试台在禁用 Objective-C 垃圾收集的情况下运行,但是 测试包需要 Objective-C 垃圾回收。启用 Objective-C 测试台的垃圾收集,在没有 OBJC_DISABLE_GC 环境变量。我尝试启用垃圾收集器,但出现另一个错误:
2010-08-26 16:38:28.824 otest-x86_64[71383:903] 测试包位于 /Users/giordano/work/CleanCode/Pomodori.st/desktop/Osx/pomodoro- 无法加载 buildfix/pomodoro/build/Release/UnitTest.octest 因为发生了意外错误:Error Domain=NSCocoaErrorDomain 代码=3587 UserInfo=0x20002a640“捆绑包“UnitTest.octest”不能 加载,因为它已损坏或缺少必要的资源。” (dlopen_preflight(/Users/giordano/application/build/Release/UnitTest.octest/Contents/MacOS/UnitTest):库未加载: @loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle 参考自: /Users/giordano/application/build/Release/UnitTest.octest/Contents/MacOS/UnitTest 原因:没有找到合适的图片。发现: /Users/giordano/application/build/Release/UnitTest.octest/Contents/MacOS/../Frameworks/Sparkle.framework/Versions/A/Sparkle: GC 能力不匹配 /Users/giordano/application/build/Release/UnitTest.octest/Contents/MacOS/../Frameworks/Sparkle.framework/Versions/A/Sparkle: GC 能力不匹配)我想知道是否可以强制单元测试在没有垃圾收集的情况下运行: 有什么线索吗?
【问题讨论】:
【参考方案1】:sparkle 框架需要构建启用 GC。
【讨论】:
一切都必须启用 GC 或 Retain-Release。你不能混。我对您的项目了解得不够多,不知道哪个是正确答案。以上是关于由于垃圾收集器禁用,无法运行 Cocoa UnitTests的主要内容,如果未能解决你的问题,请参考以下文章