OC组件化05:【方案一】本地组件化

张建 lol

前言

  • 本地组件化:主要是通过在 工程中创建framework,利用 cocoapodsworkspec 进行本地管理,不需要将项目上传 git仓库,而是直接在本项目中以 framework 的方法进行调用

创建主工程

  • 首先创建一个名为 LocalModularization 的工程

  • 集成 cocoapods,进行本地管理

注:Podfile 文件中设置适配平台 platform :ios, ‘9.0’

1
2
3
mac@bogon ~ % cd /Users/mac/Desktop/OC学习/OC\ 面试重点/组件化/LocalModularization
mac@bogon LocalModularization % pod init
mac@bogon LocalModularization % pod install

创建组件

假设有以下几个模块

  • 主工程:承载主要的表层业务代码

  • Core:独立存在,应用加密、接口请求等敏感代码

  • Base基类封装,拓展,基本的数据处理

  • Service:服务层,封装 业务 工具类,例如网络层服务、持久化服务等

  • Pods:三方依赖

其中,各个模块间的关系如下图

下面,我们来进行模块的创建,以 Base 模块为例:

  • 选择 File -> new -> project -> iOS -> Framework,新建一个 ZJBase 模块

  • 选择正确的 GroupWorkSpace(这里注意:创建的 framework 最好放在 主工程根目录下,否则后续的 podfile 执行 pod install 会报错)

创建成功后,看到的结果如下:

  • 将创建的 frameworkBuild Settings -> Mach-O Type 修改为静态库 Static Library

主工程调用 Static Library

  • ZJBase 中新建一个文件,并添加如下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
@interface ZJBaseLog : NSObject
// 打印
- (void)print;
@end

#import "ZJBaseLog.h"

@implementation ZJBaseLog
// 打印
- (void)print{
NSLog(@"hello world");
}
@end
  • 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.
On this page
OC组件化05:【方案一】本地组件化