静态库总结
介绍
-1.库的分类
-开源库:类似AFN,SDWebImage等第三方框架,可以看见具体实现文件
-闭源库:无法具体看见实现文件
-2.静态库和动态库的区别
-存在形式:
-1.静态库:.a和.framework
-2.动态库:.dylib和.framework
-优缺点
-1.静态库:静态库在连接时,会被完整的复制到可执行文件中,被多次使用就会被多次复制
-2.动态库:不会复制,只存在一份,程序在运行时会动态的加载到内存中,只加载一次.但是动态库不允许上架(wwdc2014上苹果开放了动态加载dylib接口,开放了动态库挂架->插件式开发)
.a静态库的制作和使用
-1.xcode中选择Static Library制作静态库
-2.将需要暴露的文件在Build Phases -> Copy Files
中添加
-3.不同CPU对应着不同的编译器架构
-模拟器:
-4s - 5 i386 32位
-5s - 6P x86_64 64位
-真机:
-3s - 4s armv7
-5 - 5c armv7s
-5s - 6P arm64
-获取文件支持架构
-lipo -info 文件路径
-如何支持多种架构?
-Build Setting -> Build active -> NO
-合并静态库
-lipo -crete 模拟器静态库.a文件路径 真机静态库.a文件路径 -output 合并.a文件
-Debug和Release版本下静态库的生成
-edit scheme -> 选择Debug/Release模式
-4.使用
-直接将合并的.a文件以及头文件拖入工程中.
.framework库的制作和使用
-1.打开工程,选择Framework来制作.framwwork库
-2.在Build Phases -> Headers
中添加需要暴露的头文件
-3.在Build Setting -> Build active -> No
选择不止编译活跃的架构
-4.编译后获取真机和模拟器下.framework文件,合并静态库
lipo -create .framework下工程路径 .framework下工程路径 -output 合并文件
-5.使用合并后的库General -> Embedded Binaries
中添加库后使用,会直接报错Reason: image not found
,因为这样合并生成是一个动态库,如果要获取.framework的静态库,那么需要在Build Settings -> mach-O type ->选择Dynamic Library(默认动态库)/Static Library(静态库)