dre*_*wag 16 generics linker frameworks ios swift
我无法将我的框架与利用该框架的代码链接起来.具体来说,链接器无法找到泛型结构的扩展符号.
这是Optional的扩展之一:
extension Optional {
/// Unwrap the value returning 'defaultValue' if the value is currently nil
func or(defaultValue: T) -> T {
switch(self) {
case .None:
return defaultValue
case .Some(let value):
return value
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果代码是在应用程序的主要部分中编译的,则此方法在游乐场或应用程序中运行良好.但是,当我尝试将其编译为Framework时,apps(甚至是框架的测试)会产生以下链接器错误:
体系结构i386的未定义符号:"__TFSq2orU__fGSqQ__FQQ",引自:__TFC18SwiftPlusPlusTests27Optional_SwiftPlusPlusTests13testOrWithNilfS0_FT_T_ in Optional + SwiftPlusPlusTests.o
类似的方法,如下面的一个,链接罚款(注意,它不是通用的)
extension String {
/// Returns a string by repeating it 'times' times
func repeat(times: Int) -> String {
var result = ""
for i in 0..times {
result += self
}
return result
}
}
Run Code Online (Sandbox Code Playgroud)
我的存储库中有两个其他扩展在github上:SwiftPlusPlus也没有链接(两者都在通用的strucs上).如果您提取最新提交,构建框架,然后尝试运行单元测试,您将重现错误.
到目前为止,我已经尝试在输出的框架和中间文件上运行"字符串",我没有看到这些扩展的符号,但我确实看到了repeat方法扩展的符号String.所以它似乎甚至没有将它们编译到库中.
有谁知道为什么框架中没有定义符号?
编辑
| 归档时间: |
|
| 查看次数: |
3873 次 |
| 最近记录: |