iOS静态库的制作
首先 我们要知道 库 主要分为两种 一个 是静态库,一个是动态库。
下面是他们表现形式
静态库: .a 和 .framework
动态库: .dylib 和 .framework
静态库和动态库在使用上的区别
静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存
如何制作.a 静态库 其实这个和写工具类是一个意思。
步骤一 首先新建一个静态库的工程
![](https://img.haomeiwen.com/i1292735/a7616a6c7bce59a6.png)
步骤二 新建完之后我们会发现其实他和继承NSObjc 其实是一个实现罢了,个人认为 唯一的就是 打包后不能看到m 实现的内容。
![](https://img.haomeiwen.com/i1292735/6bdf8d1b0600b9c5.png)
步骤三
我们在.h .m 文件中写点内容 和正常写方法一样
写完之后 我们要注意一点 若文件多,需要指定暴露在外界的.h 看如下设置
targets -- Build Phases -- 点击左上方加号 --New Headers Phase
![](https://img.haomeiwen.com/i1292735/5e62a285f6855106.png)
添加完后我们会看到
![](https://img.haomeiwen.com/i1292735/51720570e2fb0093.png)
把我们的需要暴露的h 文件添加上即可。 根据需要放到适当的位置
![](https://img.haomeiwen.com/i1292735/a11b0184544859bc.png)
步骤四
好了,以上内容都完工了,最后我们可以打包了,
打包前 .a 文件是红色的
![](https://img.haomeiwen.com/i1292735/04417ffd75d17e79.png)
打包后会变成黑色
如何打包呢?
command + B
即可
状态 分成release
、DeBug
、真机
、模拟器
在打包的时候我们根据自己需要的状态去打包即可。
打包我们如何找到.a
很简单,
在项目中右键 -- show in Finder -- 到达目录
最后需要说一下的是 合并 模拟器 真机的静态库
拿DeBug 的真机和模拟器 示范
先将 这个两个放在同一个目录下
cd xxx/xx
执行命令
lipo -create Debug-iphoneos/libMJRefresh.a Debug-iphonesimulator/libMJRefresh.a -output libMJRefresh.a
分析:Debug-iphoneos/libMJRefresh.a 为真机sdk 的路径
Debug-iphonesimulator/libMJRefresh.a 为模拟器的路径
-output libMJRefresh.a 合并的静态库
制作及合并过程已经全部完毕
开始使用第一个静态库吧。。。