静态库和动态库:
1.静态库:.a和.framework
@1.链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多分冗余
@2.核心代码封装,不让别人看
lipo -info +静态库 查看静态库支持哪些架构
i386:iPhone模拟器 3gs ->4s
x86_64:iPhone模拟器 5s -> 6p
arm7:iPhone 3gs ->4s
arm7s:iPhone 5 ->5c
arm64:iPhone 5s - 6p
debug和release版本
静态库文件版本(4种)
1.真机-Debug版本
2.真机-Release版本
3.模拟器-Debug版本
4.模拟器-Release版本
调试版本(Debug版本) VS 发布版本(Release版本)
- 调试版本会包含完整的符号信息,以方便调试
- 调试版本不会对代码进行优化
- 发布版本不会包含完整的符号信息
- 发布版本的执行代码是进行过优化的
- 发布版本的大小会比调试版本的略小
- 在执行速度方面,调试版本会更快些,但不意味着会有显著的提升
合并静态库.a文件
lipo -create Debug-iphoneos/libTools.a Debug-iphonesimulator/libTools.a -output libTools.a
@1.合并的好处,开发过程中既可以在真机上调试又可以在模拟器上调试
@2.合并.a坏处,如果静态库太大,合并打包后,会非常大,因此很多第三方的静态库的.a是区分版本的
@3.今后在使用静态库时要注意版本
2.动态库:.dylib和.framework
@1.链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存
需要注意的是:项目中如果使用了自制的动态库,不能上传到Appstore