iOS学习之库
2015-11-04 15:59
260 查看
一、什么是库
库是程序代码的集合,是共享程序代码的一种方式。
二、库的分类
根据源代码的公开情况,库可以分为2种类型。
1.开源库
公开源代码,能看到具体实现。
比如,SDWebImage、AFNetworking
2.闭源库
不公开源代码,是经过编译后的二进制文件,看不见具体实现。
三、静态库和动态库
1.动态库和静态库的存在形式
静态库:.a和.framework
动态库:.dylib和.framework
2.使用区别
静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝。如下图:
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。如下图:
3.查看静态库支持的架构(命令)
lipo -info XXX.a
4.架构列表
i386:iPhone模拟器 3GS—>iPhone5
x86_64:iPhone模拟器 5s 6plus
armv7:iPhone 3GS 4s
armv7s:iPhone 5 5c
arm64:iPhone 5s 6plus
5.合并静态库(同时支持不同的架构)
/*将XXX1.a和XXX2.a合并生成XXX3.a (生成的XXX3.a在当前路径下)*/
lipo –create XXX1.a XXX2.a –output XXX3.a
6. 静态库文件的版本(4种)
1)真机-Debug版本
2)真机-Release版本
3)模拟器-Debug版本
4)模拟器-Release版本
四、调试版本(Debug版本) VS 发布版本(Release版本)
- 调试版本会包含完整的符号信息,以方便调试
- 调试版本不会对代码进行优化
- 发布版本不会包含完整的符号信息
- 发布版本的执行代码是进行过优化的
- 发布版本的大小会比调试版本的略小
- 在执行速度方面,调试版本会更快些,但不意味着会有显著的提升
五、静态库编译
选择编译的静态库带头文件。
操作:(.a)
target build phases Copy files +
操作:(.framework)
target build phases headers public/private/project
六、framework
因为framework文件既可能是静态库,也可能是动态库。
使用时,动态库应该添加库。(target—>general embedded binarles)(自己制作framework时,默认制作成动态库)
framework制作成静态库:
target build settings linking match-o type static library
库是程序代码的集合,是共享程序代码的一种方式。
二、库的分类
根据源代码的公开情况,库可以分为2种类型。
1.开源库
公开源代码,能看到具体实现。
比如,SDWebImage、AFNetworking
2.闭源库
不公开源代码,是经过编译后的二进制文件,看不见具体实现。
三、静态库和动态库
1.动态库和静态库的存在形式
静态库:.a和.framework
动态库:.dylib和.framework
2.使用区别
静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝。如下图:
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。如下图:
3.查看静态库支持的架构(命令)
lipo -info XXX.a
4.架构列表
i386:iPhone模拟器 3GS—>iPhone5
x86_64:iPhone模拟器 5s 6plus
armv7:iPhone 3GS 4s
armv7s:iPhone 5 5c
arm64:iPhone 5s 6plus
5.合并静态库(同时支持不同的架构)
/*将XXX1.a和XXX2.a合并生成XXX3.a (生成的XXX3.a在当前路径下)*/
lipo –create XXX1.a XXX2.a –output XXX3.a
6. 静态库文件的版本(4种)
1)真机-Debug版本
2)真机-Release版本
3)模拟器-Debug版本
4)模拟器-Release版本
四、调试版本(Debug版本) VS 发布版本(Release版本)
- 调试版本会包含完整的符号信息,以方便调试
- 调试版本不会对代码进行优化
- 发布版本不会包含完整的符号信息
- 发布版本的执行代码是进行过优化的
- 发布版本的大小会比调试版本的略小
- 在执行速度方面,调试版本会更快些,但不意味着会有显著的提升
五、静态库编译
选择编译的静态库带头文件。
操作:(.a)
target build phases Copy files +
操作:(.framework)
target build phases headers public/private/project
六、framework
因为framework文件既可能是静态库,也可能是动态库。
使用时,动态库应该添加库。(target—>general embedded binarles)(自己制作framework时,默认制作成动态库)
framework制作成静态库:
target build settings linking match-o type static library
相关文章推荐
- iOS—OC——KVO,代理,通知
- IOS 本地推送通知
- 使你的Navigation Bar难以置信地兼容iOS6/7
- iOS no such provisioning profile was found
- iOS上传错误 ERROR ITMS-90049 立即解决方法
- iOS导航栏 如果只想改变单一自控制导航栏按钮 标题颜色 请进
- iOS常用的宏定义
- iOS开发中的常见设计模式
- iOS学习之OC语法基础-类和对象-什么是类
- 在iOS中扫描银行卡得到 银行卡的基本信息,暂时只支持 建行
- 利用字符替换进行混淆编译--参考念茜大神的杰作
- RFSegmentView在iOS7设备上不显示label的解决方案
- Nagios 搭建与配置
- IOS 开发获取沙盒路径
- isKindOfClass和isMemberOfClass的用法
- iOS--代码规范
- 关于class-dump在mac的下载和安装
- IOS安全–使用lldb对应用进行运行时分析
- IOS学习之block结构的简单用法和typedef的结合用法(block后面内容还没有看呢...)
- iOS正则表达式