无论你在OC项目还是Swift 项目中, 都遵从两个准则:
>在OC文件里只能写OC代码
>在Swift文件里只能写Swift代码
虽然不同语言文件, 但却能互相调用, 不过需要进行一下桥接, 就是需要通过下面的2个文件
1.(ProjectName-Bridging-Header.h)
Swift文件要调用OC代码的时候 你会发现你无法引用OC.h文件, 所以就要用到这个文件, 对OC文件进行桥接.
有两个生成桥接文件的方法,
1.1.通过在Swift/OC项目中直接创建OC文件/Swift文件, 首次Xcode会自动帮你创建, 按照提示操作即可.
1.2.自己创建头文件, 文件名字为任意.h,Building Settings > Swift Compiler-General ,将 Objective-C Bridging Header 设置为此文件的路径, 一般为/任意.h,把一些OC.h文件在这里引用进去, 然后你就可以在Swift文件里操作OC代码
如下图:
总结: 无论你在OC项目中, 还是Swift项目中都有图3所示,Objective-C Bridging Header顾名思义, 在头文件导入OC头文件以供Swift调用
2.(ProjectName-Swift.h)
无论你在OC项目中, 还是Swift项目,OC调用Swift代码需要在OC文件里引用这个文件, 你会发现你的项目中并没有这个文件, 因为这个文件是个隐藏文件, 在项目Build的时候自动生成所有Swift文件对应的头文件声明, 集中写在了该文件中, 在OC文件中直接导入该头文件即可使用
一般的路径如下
/Users/ns/Library/Developer/Xcode/DerivedData/ProjectName-geqrwwqpiybkuddpogphythauoyo/Build/Intermediates.noindex/ProjectName.build/Debug-iphonesimulator/SwiftApp.build/DerivedSources/ProjectName-Swift.h
注意: 若是项目名字有特殊符号, 比如项目名为mpush-client-ios(OC), Xcode会自动替换”-", “(" 和 “)”为”_”, 文件名称变为mpush_client_ios_OC_-Swift.h