现在OC与swift混编的项目越来越多,这就涉及到两种语言互相调用方法的问题。
在swift调用OC方法上还是比较简单的,只要在“XXX-Header.h”桥接文件里导入OC类的头文件即可,这个“XXX”一般表示的是项目的名称,比如说你的项目是SwiftDemo.xcodeproj,则这个桥接文件就是SwiftDemo-Bridging-Header。一般这个文件在你创建不同语言的文件时会自动提示创建,所以也不需要改什么东西,很方便。这样,在swift里就可以直接调用OC里的方法了(据说是要提前编译一下,所以Command+B就好)。
额,扯远了,这里主要说的是OC调用swift方法,这个比较坑爹,花了一点时间,网上查找,各种的都有,都试过一遍,奈何一个有用的没有! T T......
最后,其实很简单(mmp),在 Swift 文件中,若要规定固定的方法或属性暴露给 Objective-C 使用,可以在方法或属性前加上 @objc来声明。如果类是继承NSObject,那么要在非 private 的方法或属性前加上@objc(据说swift3.0之前都是系统自动加上的!!!),现在要手动加!。也可以在swift类的前面加上@objcMembers这个关键字,这样可以让该类的所有属性和方法加上@objc。当然!这样肯定还是很懵,对不对?!!!
@objcMembers class SwiftClass: NSObject {}
然后在要调用swift方法的OC类里导入文件,就以上面的项目名为例:#import "SwiftDemo-swift.h",这个文件可以在Targets->Build Settings->Swift Compiler - General ->Objective-C Generated Interface Header Name里看到。
最后,还是要提前编译一下,就可以在OC类里调用swift方法了!!!
希望对您有帮助,谢谢您的到访!!!