我的Swift项目中有两个目标:
应用目标中有一个功能未在应用中的任何位置使用,但它在测试中使用。结果我得到了构建错误:Undefined symbols for architecture arm64:
。它说该函数是未定义的,它是从测试中引用的。
看起来编译器会从app中删除这个未使用的函数。
问题:如何在应用内置中包含未使用的功能?
注意:我不想将应用程序的源文件添加到测试目标的Compile Sources
。我更喜欢将应用程序的功能标记为public
,然后在测试中导入应用程序模块。
以下是我目前如何构建应用程序中未使用的功能。这样我就可以在测试中使用它们了。
class IncludeUnusedHack {
init() {
if NSDate.date().timeIntervalSinceNow > 10_000_000 {
MyClass.unusedFunctionOne()
MyClass.unusedFunctionTwo()
}
}
}
class AppDelegate: UIResponder, UIApplicationDelegate {
let unusedHack = IncludeUnusedHack()
...
}
答案 0 :(得分:2)
我也面临这样的问题,然后通过关闭选项解决了问题。
app(in TARGETS) > Build Settings > Linking > Dead Code Stripping
答案 1 :(得分:1)
我相信这是Xcode通过6.1 Beta 2的一个错误。看起来Xcode 6.1 Beta 3修复了它(今天发布,9月29日)。从发行说明:
<强>测试强>
•死代码剥离不再从Swift中删除公共声明 单元测试所需的应用目标。 (18173029)