一. 在swift中调用oc.
-
创建名为
项目名+Bridging-Header.h
的文件,注意名称一定要一模一样。
-
在
Build Settings
->Objective-C Bridging Header
中指定路径。若是自动创建的,系统已经给你生成好了,否则就要自己添加目录了。
-
在桥接文件中导入要使用的.h文件,如图:
-
注意若提示无法找到文件,则检查是否已经关联到swift项目的target上:
-
在swift中调用oc中的Category类方法编译不通过的问题:就是在
NSString+Helper.h
中定义了一个类方法,但转换的时候Swift自动转换成了init
方法,with
前面的省略,with
后面的作为参数:
如上图,编译器在转换时自动将方法转换成了:
convenience init(text: String?)
所以调用的时候,如果显示不出方法来,可以这么调用:
let str = NSString.init(text: "")
二. 在oc中调用swift.
- 在swift的代码要能被oc调用,其定义的类要继承自NSObject,函数要用@objc定义。或者在类的开头用@objcMembers修饰,这样类的所有属性和方法都能被oc访问。如下图:
- xcode已经默认生成一个用于OC调用Swift的头文件,文件名格式是:
Target名称-Swift.h
。
- 在oc的代码中导入这个文件,在相应的方法中调用swift的代码。