列举Objective-C和Swift各种场景下混编的方法,英语不好别在意某些细节。
swift要提供给oc使用需要加关键字@objc、类需要继承自NSObject,所有库都是用Module方式导出
三方混编库CocoaLumberjack/Swift
1、首次添加HelloWorld.swift
文件时按照提示创建Objective-C bridging header
文件
// HelloWorld.swift
@objc HelloWorld: NSObject {
@objc func hello() {
// code ...
}
}
2、在.h
或者.m
(推荐)导入自动生成TargetName-swift.h
#import "MixedExampe-Swift.h"
// 调用swift类中定义的实例方法
[[[HelloWorld alloc] init] hello];
1、在Objective-C bridging header
中增加导入
// Outdate.h
@interface Outdate : NSObject
+ (NSString *)warning;
@end
#import "Outdate.h"
2、在swift文件中即可使用
Outdate.warning()
推荐OC库使用module方式提供
1、OC文件中使用纯OC库
//导入
@import PureOCLib;
NSLog(@"%@", [PureOCLibVersion ver]);
2、swift文件中使用OC库
// 导入
import PureOCLib
print(PureOCLibVersion.ver())
1、OC文件中使用纯swift库
//导入
import PureSwiftLib
NSLog(@"%@", [PureSwiftVersion ver]);
2、swift文件中使用纯swift库
// 导入
import PureOCLib
print(PureSwiftVersion.ver())
### 使用混编库
1、OC文件中使用混编库
```objc
//导入
@import MixedLib;
print(MixedOCVersion.ver())
print(MixedSwiftVersion.ver())
2、swift文件中使用混编库
import MixedLib
print(MixedOCVersion.ver())
print(MixedSwiftVersion.ver())
// 静态库导入
#import "MixedLib-Swift.h"
// 动态库导入
#import <MixedLib/MixedLib-Swift.h>
[MixedSwiftVersion ver];
直接使用
// 导入swift库
@import PureSwiftLib2;
[PureSwiftVersion2 ver];
// 导入混编库
@import CocoaLumberjack;
DDLogDebug(@"0.1.0 (Pure OC Lib)");
import PureOCLib2
PureOCVersion2.ver()
import CocoaLumberjack
DDLogDebug("0.1.0 (Pure Swift Lib2)")