库: 就是程序代码的集合,是共享程序代码的一种方式
1. 库分为:开源库 和 闭源库
1.1 开源库: 公开源代码,能看到具体实现.如SDWebImage, AFNetworking
1.2 闭源库: 不公开源代码,是经过编译后的二进制文件,看不到具体实现
1.3.闭源库: 分为静态库 和 动态库
2. 静态库 和 动态库 的存在形式:
2.1 静态库: .a文件 和 .framework文件
2.2 动态库: .dylib文件 和 .framework文件
3. 静态库 和 动态库 的使用上的不同:
3.1 静态库: 链接时,静态库会被完整的复制到可执行文件中,被调用多少次就会有多少份复制(被多次使用就会有多份冗余拷贝)
3.2. 动态库: 链接时不复制,程序运行时由系统动态的加载到内存,供程序调用,系统只加载一次,供多个程序调用,节省内存
注意:苹果官方要求,项目中不能使用自制的动态库,否则不能上传到AppStore. 我们只能使用苹果提供的动态库
**封装SDK静态库(.a文件 和 .h 还有资源bundle)
步骤:
1. 新建项目
2. 项目名称:
3.删除自动生成的两个文件(因为不是我们要打包的文件)
4.将要打包封装SDK的文件拖到项目中
5.告诉暴露哪些头文件
6.编译两次 生成两种.a文件(模拟器.a 和 真机.a)
7. show in finder 可以找到.h文件 和封装成.a的.m文件 还有需要用到的
recourse bundle(资源图片等) ,就可作为SDK使用在其他项目中
8.将模拟器.a 和 真机.a 合并的方法:
使用终端:
输出命令: cd 文件夹路径 lipo -create 真机.a路径 模拟器.a路径 -output 输出文件名.a