xCode - 静态库
2016-01-27 01:01
253 查看
1, 静态库的制作步骤
1.1 创建静态库项目
如下图所示, 新建静态库类型的项目.1.2 包含静态库头文件
将需要被外部知道的头文件包含在静态库中.1.3 生成.a静态库
生成模拟器的.a文件.生成真机测试的.a文件.
1.4 静态库的使用
在自己的项目中拖入静态库, 导入头文件, 调用方法即可.2, 关于静态库的拓展
2.1 什么是库
库是一系列程序代码的集合, 是共享程序代码的一种方式.根据代码的公开情况,可以分为两种类型:
开源库:
公开源代码, 可以看到功能的具体实现;
如:AFNNetWorking, MBProgressHUD等等;
闭源库:
不公开源代码, 是经过编译后的二进制文件, 看不到具体的实现;
主要分为: 静态库和动态库;
2.2 静态库和动态库
静态库和动态库的存在形式静态库: .a, .framework
动态库: .dylib, .framework
静态库和动态库在使用上的区别
链接时, 静态库会被完整的拷贝到可执行程序中, 如果多次使用就会出现多份冗余拷贝.
动态库子啊链接时, 不复制, 程序在运行时由系统动态的加载到内存中, 供程序调用, 系统只加载一次, 多个程序可以共用, 更节省内存.
如果项目中使用了自定义的动态库, 将
不能上传到AppStore中去.
静态库链接示意图:
动态库链接示意图:
2.3 iPhone中模拟器和真机的cup架构
i386 : iPhone模拟器 3gs->iPhone5 x86_64 : iPhone模拟器 5s->6plus armv7 : iPhone 3gs->4s armv7s : iPhone 5->5c arm64 : iPhone 5s->6splus 注: lipo -info 静态库:查看该静态库支持哪些架构
2.4 生成支持所有架构的静态库
如图所示,当Debug和Release都改为时候, 会生成所有架构上的静态库, 并存放在一个.a文件中.2.5 静态库的版本
静态库文件的版本(4种)1.真机-Debug版本
2.真机-Release版本
3.模拟器-Debug版本
4.模拟器-Release版本
调试版本(Debug版本) VS 发布版本(Release版本)
调试版本会包含完整的符号信息,以方便调试
调试版本不会对代码进行优化
发布版本不会包含完整的符号信息
发布版本的执行代码是进行过优化的
发布版本的大小会比调试版本的略小
在执行速度方面,调试版本会更快些,但不意味着会有显著的提升
生成Release版本的静态库
Build Configuration 设置为 Release之后, 就会生成所有四种静态库版本.
生成四种静态库版本:
2.6 静态库的合并
检测.a的类型$ lipo -info libCZTools.a
合并.a
lipo -create Debug-iphoneos/libTools.a Debug-iphonesimulator/libTools.a -output libTools.a
合并.a的好处,开发过程中既可以在真机上调试,也可以在模拟器上调试 合并.a的坏处,如果静态库太大,合并打包后,会非常大,因此很多第三方的静态库的.a是区分版本的 今后在使用.a时一定注意版本
相关文章推荐
- 第一章 游戏开发环境-项目工具的选择
- Longest k-Good Segment
- hdu
- HDU3966(树链剖分) 模板题
- [ 备忘 ] php 正则表达式与 mysql IN 查询的排序问题
- [傅里叶变换及其应用学习笔记] 二十七. 高维傅里叶变换,复习
- fiddler抓包
- [ 笔记 ] PHP 命名空间(namespace)
- 20160126深入浅出obc知识点整理
- js正则表达式lastIndex
- MyEclipse 2015 Stable 1.0下载安装破解日志
- linux的一些常用命令和emacs的一些快捷键
- The Swift Programming Language阅读笔记
- Leetcode Largest Number
- Eclipse的基本设置
- Scrapy安装过程问题总结
- Mac下配置liteide
- GCC 编译详解
- 《编码隐藏在计算机软硬件背后的语言》读感
- Leetcode 187. Repeated DNA Sequences