在objective-C ++(.mm文件)中调用swift

时间:2015-10-14 23:51:10

标签: objective-c swift objective-c++

可以在Objective-C ++(。mm)文件中调用Swift代码吗?是否有任何简单的解决方法?

我有一个Xcode项目,它是Swift,Objective-C和C ++的混合体。我没有问题从使用-Bridging-Header.h从Objective-C到Swift,从使用-Swift.h从Swift到Objective-C。

但我有一个.mm文件,它是Objective-C ++。当我尝试#import "[ProductName]-Swift.h"时,它会在-Swift.h文件中抛出许多编译错误,例如:

  

无法找到NSApplicationDelegate'的协议声明,是吗?   意味着NSConnectionDelegate'?

     

没有名为' NSTableViewDataSource'

的类型协议

等...

我已经研究了其他几个类似问题,例如Can I mix Swift with C++? Like the Objective - C .mm files,但它似乎没有给我一个明确的答案或解决方案。

正如我所看到的,我目前的解决方法是在Objective-C中创建一个使用Swift代码然后将其导入Objective-C ++代码的包装器对象。

1 个答案:

答案 0 :(得分:7)

我刚刚成功编译了一个.mm文件,通过添加-fcxx-modules标志来调用swift。 Xcode生成的<Module>-Swift.h文件包含@import并检查模块支持。从这个答案中找到了标志:https://stackoverflow.com/a/20708695/2570853