Swift类函数和桥接C函数之间的名称冲突

时间:2018-02-18 11:19:11

标签: swift

我有一个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)'而不是全局功能' computeFoo'在模块' __ ObjC'

     

使用' __ ObjC。'在模块' __ ObjC'

中引用全局函数

但是,提议的修复程序也不会编译:

static func computeFoo(a: Double, b: Double) -> Double {
    return __ObjC.computeFoo(a, b)
}

结果:

  

使用未解析的标识符' __ ObjC'

是否可以将这些功能名称相等或者是否必须重命名其中一个功能?

1 个答案:

答案 0 :(得分:2)

首先应该尝试的一件事是将ProductModuleName添加到全局函数中:

class Foo {
    static func computeFoo(a: Double, b: Double) -> Double {
        return ProductModuleName.computeFoo(a, b)
    }
}

(假设您知道自己的ProductModuleName。)

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