前言
不论是个人开发还是团队开发,随着经验的积累,会有一套属于自己的类和工具函数。在团队开发中,每个成员都会有自己习惯的属于自己的类和工具,如果不能进行整合利用,一个项目中会存在许多重复的工具函数和类别,所以整合成为一个受到大家认可的工具集尤为重要。当开启一个新项目时,你肯定会发现许多之前项目中用到过的方法,重用代码的最简单方法是copy,但是这种方式会对维护造成极大的阻碍,你很难保证共用文件在所有项目之间的同步升级。这时静态库就闪亮登场了,一个静态库是由若干个类,函数,定义和资源的包装,将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节,你可以将其打包并在项目之间共享。
制作静态库
1.开一个新项目,创建静态库
2.将你需要打包的文件拖入项目。(此处无图)
此处需要注意的是:如果你在静态库工程中使用了Category,那么你可能会碰到链接问题。解决方法:
* 方法1:在生成静态库的工程和使用静态库的工程中使用“-all_load”编译选项,即在“Other Linker Flags”选项添加“-all_load”。(Build Settings)
* 方法2:在Category的.M文件中,声明一个虚拟类。(推荐)
3.配置你的静态库
* 配置静态库的Deployment Target(Build Settings)
* 配置需要暴露的头文件(Build Phases - Copy File)
* 配置静态库的architecture版本(Build Settings - Build Active Architecture Only)
注意:"Build Active Architecture Only" 设置为”NO” (设置为NO会编译所有版本,否则只编译当前的architecture版本)
在进行以上配置之后,就可以满足大多数静态库的需求了,打包走起!
4.编译生成静态库.a文件
1)分别选择真机和Iphone6模拟器进行编译,这是你可以看到项目文件夹中Products里面的.a文件生成了,然后右键Show In Finder
2)可以看到在文件夹中生成了对应的模拟器.a以及真机.a,以及需要暴露的头文件。
3)合并.a文件
使用终端进行合成操作 lipo -create (真机.a路径) (模拟器.a路径) -output 保存路径/(文件名).a
成功之后新生成的.a文件就可以使用啦!!!
5.使用静态库
将.h以及合成的通用版.a文件导入测试工程中,实现.h提供的接口
福利
既然你坚持看到这里!!!不得不送你一个宏作为感谢,帮助你在Category中快速创建虚拟类
#ifndef FIX_CATEGORY_BUG
#define FIX_CATEGORY_BUG(_name_) \
@interface FIX_CATEGORY_BUG ## _name_ : NSObject @end\
@implementation FIX_CATEGORY_BUG ## _name_ @end
#endif
目前iOS设备对应的CPU架构了列表:iOS设备的CPU架构