一、概念了解
1.什么是库?
库是共享程序代码的方式,一般分为静态库和动态库。
2.静态库和动态库的区别
静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份拷贝。静态库形式有.a和.framework两种形式
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序公用,节省内存。动态库形式有.dylib和.framework形式。
3.注意:系统的.framework是动态库,我们自己建立的.framework是静态库。
- .a和.framework的区别
.a是一个纯二进制文件,.a文件不能直接使用,要配合.h文件使用
.framework中除了有二进制文件之外还有资源文件。.framework可以直接使用
5.为什么要使用静态库
方便共享代码,便于合理使用;
和别人分享你的代码库,但不想让别人看到你代码的实现;
开发第三方SDK的需要。
.framework的封装和.a的封装差不多,.a封装可参考http://www.jianshu.com/p/2ae38070275a
下面讲下.framework封装的具体过程
二、封装过程
1.创建一个工程,在创建时选择下图所标注的选项
2.创建好工程后,创建自己的工具类,如下图所示
3.配置系统参数,选中工程文件--->build setting----->linking
4.公开你需要公开的头文件,build Phases ---->Headers
5.进入ZZFrameworkTest.h文件中将你要公开的.h文件引入
6.打包.framework,先选中模拟器,编译,再选中真机,编译程序,在工程中找到framework文件---->show in finder,会找到如下图所示,一个是Debug-iphoneos(真机)下的,一个是Debug-iphonesimulator(模拟器)下的
7.通过终端将两个framework文件合并。打开终端,输入命令lipo -create 模拟器framework文件路径(将文件拖入终端即可) 真机framework文件路径 -output 合并的文件路径,回车,如图所示
注意,往终端拖文件时不是拖.framework文件,而是它文件下的一个不带后缀名的一个文件
这样你就合并生成了一个不带后缀名的文件,将你合并的这个文件名改成你未合并之前的名字并替换掉原来真机里面的文件
8.将修改后的framework文件拷贝出来保存,这就是我们最终封装好的文件
9.新建一个正常的工程,将封装好的framework文件导入工程
并使用封装好的方法
这就是封装加使用的全部过程,参考文章http://www.jianshu.com/p/87dbf57cfe4a