IOS学习之——库 静态库 动态库的学习和使用




什么是库?
库是程序代码的集合,是共享程序代码的一种方式

根据源代码的公开情况,库可以分为2种类型
开源库
公开源代码,能看到具体实现
比如SDWebImageAFNetworking

闭源库
不公开源代码,是经过编译后的二进制文件,看不到具体实现
主要分为:静态库、动态库
01. 为什么要做静态库
================================================================================

1>  国内的企业,掌握有核心技术,同时是又希望更多的程序员来使用其技术,因此采用"闭源"的方式开发使用
例如:百度地图,友盟,JPush2>  在企业开发中,一些核心技术或者常用框架,出于安全性和稳定性的考虑,也会提供静态库给程序员使用

02. 静态库的特点
================================================================================
.a + .h

03. 静态库简单演练
================================================================================

1>  新建Tools项目
2>  创建一个类方法,实现一个简单的加法
3>  编译
#   注意,在编译静态库时,需要编译两个版本 -> 真机(arm) | 模拟器(i386)
4>  新建项目将编译生成的.a + .h拖到项目中使用

04. 静态库中的资源包的使用
================================================================================

问题:有些第三方库会使用到一些图片素材,例如公司的logo等。

但是由于Xcode默认在编译时会把所有的素材文件导入到mainBundle中,为了避免与使用静态库的程序冲突。
在静态库中如果要使用图片素材,会利用bundle的手段

1>  建立bundle,并且向其中添加图片
2>  创建一个类方法,返回图片
3>  编译
4>  调用方如果需要使用,需要导入 .h + .a + XXX.bundle

05. 静态库中的自定义视图
================================================================================
问题:程序需要测试
静态库如何测试呢?

创建复合项目

1>  复习块代码传值

06. 静态库的使用
================================================================================

新建项目将编译生成的.a + .h拖到项目中使用

07. 静态库的种类
================================================================================

静态库文件的版本(4种)
1.真机-Debug版本
2.真机-Release版本
3.模拟器-Debug版本
4.模拟器-Release版本

调试版本(Debug版本) VS 发布版本(Release版本)
--------------------------------------------------------------------------------
- 调试版本会包含完整的符号信息,以方便调试
- 调试版本不会对代码进行优化

- 发布版本不会包含完整的符号信息
- 发布版本的执行代码是进行过优化的
- 发布版本的大小会比调试版本的略小
- 在执行速度方面,调试版本会更快些,但不意味着会有显著的提升

08. 静态库的合并
================================================================================

# 检测.a的类型
$ lipo -info libCZTools.a

# 合并.a
lipo -create Debug-iphoneos/libTools.a Debug-iphonesimulator/libTools.a -output libTools.a

# 合并.a的好处,开发过程中既可以在真机上调试,也可以在模拟器上调试
# 合并.a的坏处,如果静态库太大,合并打包后,会非常大,因此很多第三方的静态库的.a是区分版本的
# 今后在使用.a时一定注意版本

静态库和动态库

静态库和动态库的存在形式
静态库:.a 和 .framework
动态库:.dylib 和 .framework

静态库和动态库在使用上的区别
静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝(左图所示)
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存(右图所示)
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值