iOS--静态库开发
概述:
1.静态库和动态库的存在形式
- 静态库:
.a
和.framework
- 动态库:
.dylib
和.framework
- 静态库:
2.静态库和动态库在使用上的区别
- 静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份
冗余拷贝
(左图所示) - 动态库:链接时不复制,程序
运行时
由系统动态加载到内存,供程序调用,系统只加载一次
,多个程序共用,节省内存
(右图所示) 注意
:项目中如果使用了自制的动态库,不能被上传到AppStore
- 静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份
3.静态库的使用场合
- 不公开源代码,不想让他人看到具体实现.
静态库的创建方法
- 新建一个项目(和我们平时的做法一样)
2.点击
项目
,添加一个TARGET
,选择静态库
(如下图)
此时我们看到项目中多出了几个文件
- 2.创建要生成静态库的文件(要在特定的文件夹中哦)
在MyLib文件
下自动生成的 MyLib.h
和 MyLib.m
文件,我们一般不直接使用,此时我们删除即可,这是我们就要在 MyLib文件
中添加我们要生成静态库的文件
3.暴漏静态库的头文件,便于外界使用
4.编译静态库(默认生成的是Debug下的静态库)
此时我们可以在Finder中查看生成的静态库文件
注意:编译默认生成的是Debug环境下的静态库文件,且CPU架构仅仅是选中的模拟器(如此是的iPhone6)的CPU架构,(如何查看静态库文件支持的CPU架构,见下文)
修改后再次重复编译即可
- 5.编译静态库(生成的是Release下的静态库)
再次编译即可生成Release环境下的静态库
此时我们一共生成了4种类型的静态库文件
6.为开发方便我们有可能还要将模拟和真机的静态库合并
首先利用终端进入静态库所在的文件目录
lipo
-create
Release-iphoneos/静态库.a Release-iphonesimulator/静态库.a-output
静态库.a此时生成的就是就是合并后的静态库文件(即可用在
真机
又可用在模拟器
上)
7.查看静态库支持的CPU架构
- 首先利用终端进入静态库所在的文件目录
lipo
-info
静态库.a
8.静态库的引入和使用
如果没有引入静态库,就会出错(如下)
引入静态库