邓小胖先生:iOS自制framework总结

最近打算做一下项目组件化,所以先要夯实基础,自制一下framework!公司项目中遇到TableView和CollectionView无数据的情况,各种无数据视图代码copy来copy去的,无比难过!这个framework就做列表无数据视图的功能!

1,首先创建工程,选择iOS->Cocoa Touch Framework,如下图所示:

1.1 选择平台,搜索framework,这里我选择的是iOS平台的

1.2 设置名称语言等信息,这个和创建工程近似

" alt="" width=“28” height=“30” align="">

1.3 xcode会自动生成一个和framework同名的头文件

2,新建或者拖入代码、资源文件到framework下,完成framework的目的功能

2.1 写、拖入功能代码

2.2 把需要对外暴露的头文件写道framework同名头文件中

3,做相应的配置

3.1 选择framework类型

3.2 选择对外暴露的头文件,public --> 对外暴露

4,工程其他相关配置

4.1 Build Settings中Link下面的Dead Code Stripping设置为NO:先不进行死代码剥离。

4.2 Build Settings中Link下面的Link With Standard Libraries设置NO:避免重复链接

4.3 Build Settings中Build Active Architecture Only设置为NO, 如果设为YES,会导致其编译时只生成当前机器的框架;将其设置为NO后,发现用模拟器编译后生成的framework同时包含x86_64和i386架构。在 Excluded Architectures里Release模式下排除模拟器Any iOS Simulator SDK。因为xcode12生成的模拟器版本静态库会多包含一个arm64架构,这样会妨碍后面模拟器版本和真机版本合并,这样设置就可让模拟器版本没有arm64架构。

5,Build配置打包

5.1 配置构建环境 Debug - Release

5.2 找到framework文件

5.3 查看framework文件结构

6,主项目引入配置

6.1 配置framework的Embed属性

6.2 配置主工程other link flag

7,终端合并真机和模拟器的framework

分别找到真机和模拟器Build成功之后framework的所在路径,然后运行下面命令(路径换成自己的哈)

lipo -create Release-iphoneos/ListEmptyDataStyle.framework/ListEmptyDataStyle Release-iphonesimulator/ListEmptyDataStyle.framework/ListEmptyDataStyle -output FatFile/ListEmptyDataStyle

8,爬坑提示

8.1 理解一下动态库和静态库: www.jianshu.com/p/4e0fd0214…

8.2 由于iOS8之后才允许使用插入动态库,所以网上大部分教程在选MachO-Type的时候选择的是Static Library。但是.a静态库和静态framework无法访问库中的资源图片的。所以自己创建的framework如果想访问库中的资源文件,那么必须要是动态库。

8.3 自建动态库手动拖入的工程后,必须选择embed选项,否则的话,启动即崩溃。

8.4 静态库中关联的对象无法用KVO进行观察,不会触动KVO回调方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值