赞
踩
Swift与OC的混编可以总结出以下几种场景
这里把Pod替换为Framework也是一样的,有时也把Project Target说成APP Target。1是同一target内混编,2是target间混编。
主工程里OC&Swift相互调用
在OC工程里创建一个Swift类会跳出如下弹框
点击Create Bridging Header按钮生成桥接文件MainProject-Bridging-Header.h和MainProject-Swift, MainProject是工程名称。同时会在Build Settings里添加Swift Complier配置:
如果没有点击Create Bridging Header按钮,而是点击了Don’t create,那么将不会创建桥接文件,但是Build Settings里添加Swift Complier配置项,只是该配置项里没有Bridging Header,这时需要开发者自行创建桥接文件,并配置好路径。
OC调用Swift接口
Swift类里的接口应该加上@objc修饰
class Dog: NSObject {
@objc let legNumber = 4
var temper = "temper-good"
@objc var friend = Cat()
@objc func eat() {
print("The dog is eating")
}
}
在OC类中首先要引用MainProject-Swift.h
#import "MainProject-Swift.h"
最后就可以在OC类里引用Swift类
#import "MainProject-Swift.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
Dog *dog = [[Dog alloc] init];
[dog eat];
}
@end
结论
我们再看看MainProject-Swift.h到底是什么。MainProject-Swift.h是一个自动生成的头文件,工程里没有对应的实体文件,可以Command+LeftClick点击MainProject-Swift.h进去看到其中有一段
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。