Swift类函数与桥接C函数之间的名称冲突
我有一个Swift 4项目,它导入了一个用普通C编写的库。一个桥接头已经设置好并开始工作。我只有一个问题:C库包含一个函数Swift类函数与桥接C函数之间的名称冲突,swift,Swift,我有一个Swift 4项目,它导入了一个用普通C编写的库。一个桥接头已经设置好并开始工作。我只有一个问题:C库包含一个函数computeFoo,我想在Swift中将其包装为一个具有相同名称的静态类函数: class Foo { static func computeFoo(a: Double, b: Double) -> Double { return computeFoo(a, b) } } 编译此文件时,Xcode会正确地抱怨: “computeFoo
computeFoo
,我想在Swift中将其包装为一个具有相同名称的静态类函数:
class Foo {
static func computeFoo(a: Double, b: Double) -> Double {
return computeFoo(a, b)
}
}
编译此文件时,Xcode会正确地抱怨:
“computeFoo”的使用指的是静态方法“computeFoo(a:Double,b:Double)”,而不是模块“\uu ObjC”中的全局函数“computeFoo”
使用“\u ObjC.”引用模块“\u ObjC”中的全局函数
但是,建议的修复程序也不会编译:
static func computeFoo(a: Double, b: Double) -> Double {
return __ObjC.computeFoo(a, b)
}
结果:
使用未解析标识符“\uuu ObjC”
是否可能使这些函数名相等,或者我必须重命名其中一个函数?您首先应该尝试的一件事是将ProductModuleName添加到全局函数:
class Foo {
static func computeFoo(a: Double, b: Double) -> Double {
return ProductModuleName.computeFoo(a, b)
}
}
(假设您知道您的ProductModuleName
)
如果这不能解决您的问题,您可能需要澄清更多信息