Xcode Swift 调用自己 OC 库并不暴露 OC 内部接口

之前写过一篇 Xcode Pods自己编写的库Development Pods中的OC和Swift混编https://blog.youkuaiyun.com/IT_learner_lgq/article/details/143381312?spm=1001.2014.3001.5501

但之后发现这种方式打包库后在其他 Swft 项目调用时会暴露自己 OC 库的函数,所以采取了另一种思路,对原先自己的 OC 库进行一层 Swift 包装,之后通过 Swift 来控制导入导出,步骤如下:

1.在 OC 库中创建一个暴露目录 Module

2.创建 Module/Module.h

#ifndef Module_h
#define Module_h

// 这里存放要能被自己库 Swift 文件调用的 OC 头文件
#import '../xx/xxxx.h'

3.创建 Module/module.modulemap

module Module {
    umbrella header "Module.h"
    export *
}

4.创建包装 OC 功能的 Module/Module.swift

import Foundation
@_implementationOnly import Module    // 一定要加这句,代表别的 Swift 无法直接调用 Module 中的相关功能

// 调用的 OC 类 是 Module.h 中导出的
internal class xxx1: OC 类1 {
    override func xxx (){
        // 重写方法
    }
}

internal class xxx2: OC 类2 {
    // 如果不需要重写方法,就为空
}

5.创建暴露类 Project/ExposedModule.swift

import Foundation

public class ExposedModule {
    // 调用 Module 的代码
    let module1 = xxx1();
    let module2 = xxx2();
    public func exposedFunc(){
         module1.xxx();
         module2.xxx();
    }
}

6.打包 OC 库,再别的 Swift 项目中导入后,就可以直接使用如下代码,而不会暴露 OC 库中的内容了

import 打包库名

let module = ExposedModule();
module.exposedFunc();

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ligaoqi2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值