Swift类函数与桥接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

我有一个Swift 4项目,它导入了一个用普通C编写的库。一个桥接头已经设置好并开始工作。我只有一个问题:C库包含一个函数
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

如果这不能解决您的问题,您可能需要澄清更多信息