场景一:主工程原本为oc编写,在主工程添加swift的文件
1、创建Swift的vc
正常创建文件,语言选swift
2、点击next
3、点击Create bridging Header,会自定生成以“项目名称-Bridging-Header.h"文件,如下图:
如果你点击Dont create,后面又想oc调用swift,可以手动去到build setting里创建,如下图:
4、OC使用Swift文件
导入头文件,在要使用swift的文件的地方都导入此头文件,或者将此头文件放入pch里面,即可使用swift的文件
#import "AllTest-Swift.h" //项目名称-Swift.h
点击进去,可以看到我刚刚建的文件的,如下所示,有初始化的方法,和我暴露在外面的方法~所有swift文件都会在这个文件里面被“转化”成OC,如下图
5、oc里面调用swift,像调用oc一样,完全看不出来。
- (void)jumpSwiftVC {
MySwiftViewController *swiftVC = [[MySwiftViewController alloc] init];
[swiftVC helloOC];
[self.navigationController pushViewController:swiftVC animated:YES];
}
6、swift方法想被oc调用,前面需带objc
class MySwiftViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@objc public func helloOC (){
print("您好oc,我是swift类")
}
}
场景二:Swift里面使用oc的view
1、将oc的view放入之前系统创建的bridgeHeader里面
2、swift里面使用如下,像是swiftView一样,正常使用
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(ocView)
// Do any additional setup after loading the view.
}
lazy var ocView: MyOCView = {
let view = MyOCView(frame: CGRectMake(10, 100, 100, 100))
return view
}()