- 库:程序代码的集合,共享程序代码的一种方式
- 根据源代码的公开情况,库可以分为2种情况
开源库:公开源代码,能看到具体实现
闭源库:不公开源代码,经过编译后的二进制文件,看不到具体实现(静态库 动态库) - 静态库和动态库
静态库: .a和 .framework
动态库: dylib和 .framework(iOS9取消了.dylib,使用tbd替代) - 静态库和动态库在使用上的区别
静态库:连接时,静态库会被完成地复制到可执行文件中,被多次使用就有多分冗余拷贝
动态库:链接时,连接不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存(项目中,如果使用了动态库,不能被上传到AppStore)
静态库简单使用(.a)
-
新建静态库项目
新建静态库.png -
编写静态库文件
编写静态库文件.png - 将编写的静态库文件的.h添加到项目
- 编译 command+b
-
Show in Finder 查看静态库文件
查看静态库文件.png - Undefinde symbols for architecture x86_64:不能运行在x86_64架构上
静态文件编译和运行的架构不一样
模拟器:
iPhone4 4s 5 32位架构 i368
iphone 5s 6 6p 7 7p 64位架构 x86_64
真机
iphone4 32位架构 armV7
iphone 5 32位架构 armv7s
iphone5s ... 64位架构 arm64
查看静态库架构
- 控制台进入到架构所在目录
- lipo -info xxxxxx.a
合并架构
- 方式1:命令行
lipo -create xxxx.a xxxx.a -output xxxx.a
-
方式2:修改debug下编译模式为NO(不能合并模拟器和真机)
合并架构.png - 有点:程序员不需要切换模拟器和真机
- 缺点:占用空间大
- 如果静态库体积小,建议合并,如果静态库体积太大,不建议合并
资源包
- 资源包的创建:将文件夹名称改为 .bundle结尾即可
- 导图图片的时候要写全路径
- 资源包要手动导入
静态库(.framework)
-
创建
framework静态库的创建.png -
删除所有内容,直接导入要导入文件的头文件即可
修改framework的文件.png
修改后的文件.png -
将头文件拖拽到public中
添加头文件.png -
添加架构
添加架构.png
add.png -
将动态库修改为静态库(framework默认创建的是动态库)
将动态库修改为静态库.png - 编译 Command + b
网友评论