OC组件化05:【方案一】本地组件化
前言
本地组件化
:主要是通过在工程中创建framework
,利用cocoapods
的workspec
进行本地管理,不需要将项目上传git仓库
,而是直接在本项目中以framework
的方法进行调用
创建主工程
- 首先创建一个名为
LocalModularization
的工程
- 集成
cocoapods
,进行本地管理
注:Podfile 文件中设置适配平台 platform :ios, ‘9.0’
1 | mac@bogon ~ % cd /Users/mac/Desktop/OC学习/OC\ 面试重点/组件化/LocalModularization |
创建组件
假设有以下几个模块
主工程
:承载主要的表层业务代码Core
:独立存在,应用加密、接口请求等敏感代码Base
:基类封装
,拓展,基本的数据处理Service
:服务层,封装业务
工具类,例如网络层服务、持久化服务等Pods
:三方依赖
其中,各个模块间的关系如下图
下面,我们来进行模块的创建,以 Base
模块为例:
- 选择
File -> new -> project -> iOS -> Framework
,新建一个ZJBase
模块
- 选择正确的
Group
和WorkSpace
(这里注意:创建的framework
最好放在主工程根目录下
,否则后续的podfile
执行pod install
会报错)
创建成功后,看到的结果如下:
- 将创建的
framework
的Build Settings -> Mach-O Type
修改为静态库Static Library
主工程调用 Static Library
- 在
ZJBase
中新建一个文件,并添加如下代码
1 | @interface ZJBaseLog : NSObject |
- 在
Build Phases -> Headers -> Public
中将新建的文件拖拽到Puclic
中,这样主工程才能访问该文件
- 在
ZJBase
文件中添加引用#import <ZJBase/ZJBaseLog.h>
- 在
主工程
中,选择target -> Frameworks,Libraries,and Embedded Content -> + 号 -> 添加 ZJBase
,只需要build
主工程,library
能够自动联编
- Embed 改为
Do Not Embed
使用
首先 #import <ZJCore/ZJCoreSetting.h>
,然后使用
这里需要注意的是,子 Static Library
之间的互相调用,与主工程调用 Static Library
类似,需要 添加依赖、暴露header
即可
- Post title:OC组件化05:【方案一】本地组件化
- Post author:张建
- Create time:2023-03-04 23:27:35
- Post link:https://redefine.ohevan.com/2023/03/04/OC组件化/OC组件化05:【方案一】本地组件化/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.