OC项目中使用swift三方库

一:引入swift的三方库,这里以SignalArgon2为例。

1、首先需要打开Podfile文件,添加ENV['SWIFT_VERSION'] = '要用的swift版本号'use_frameworks! 如下图

Podfile配置.png

2、保存Podfile文件,pod install更新即可。此时打开项目就能看见导入的swift库SignalArgon2了。

二:在OC代码里面使用引用的SignalArgon2三方库

1、创建一个swift文件TextOCAndSwift.swift,跟创建OC文件一样,只不过语言选择swift。
2、此时会生成一个 TestOC-Bridging-Header.h 文件,TestOC是你的项目名称,在这个文件里面引用SignalArgon2头文件,注意要用swfit语法

@import SignalArgon2;

3、在TextOCAndSwift 里面写一个供OC调用的方法,然后在这个方法里面调用SignalArgon2的方法。

//    供OC调用
    @objc func ocCallMethod(_ data: String) -> String {
//        调用SignalArgon2方法
        let (rawHash, encodedHash) = try! Argon2.hash(
            iterations: 1,
            memoryInKiB: 10 * 1024,
            threads: 1,
            password: "password".data(using: .utf8)!,
            salt: "salt".data(using: .utf8)!,
            desiredLength: 32,
            variant: .i,
            version: .v10
        )
//        将调用SignalArgon2方法的结果通过ocCallMethod返回OC
        return encodedHash;
    }

4、在你要使用SignalArgon2的OC文件里面引用TestOC-Swift.h,这个文件也是系统生成的,TestOC替换成你的项目名称,然后就可以调用TextOCAndSwift的方法了。

#import "TestOC-Swift.h"

TextOCAndSwift *test = [[TextOCAndSwift alloc] init];
//    调用TextOCAndSwift的ocCallMethod方法,并拿到返回的结果
NSString *string = [test ocCallMethod:@"ocCallMethod成功"];
NSLog(@"ocCallMethodReturn==%@",string);

5、到这里,通过架桥,就可以在OC里面调用swift三方库里面的方法了

三:OC调用swift 补充

1、swift里面声明供OC使用的方法,需要在方法最前面加上 @objc,如果写的方法过多,不想在每个方法前面都写,直接在swift类前面加上@objcMembers 就可以了。

@objcMembers class TextOCAndSwift: NSObject {}

2、func ocCallMethod(_ data: String) -> String {} 参数解释
ocCallMethod 方法名称
data 传入的参数名称
String 传入的参数类型
-> 表示方法有返回值
String 返回值类型
data 前面 _ 加_OC调用时方法明不需要带data,具体如下:

// 有_
func ocCallMethod(_ data: String, ) {}
// 对应OC调用
[test ocCallMethod:@""];
// 没有_
func ocCallMethod(data: String, ) {}
// 对应OC调用
[test ocCallMethodWithData:@""];

3、多参数

//  swift 对应声明
func ocCallMethod(data: String, pass: String) {}
// OC 对应调用
[test ocCallMethodWithData:@"" pass:@""];

你可能感兴趣的:(OC项目中使用swift三方库)