ios的库

12.25

1、

1》静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多分冗余拷贝

动态库:链接时不复制,程序运行时由系统动态库加载到内存,供程序调用,系统只加载一次,多个程序公用,节省内存

2》静态库形式:.a .framework

3》ios动态库形式:.dylib  .tbd .framework 所有.dylib和.tbd都属于动态库,.framework可能是动态库可能是静态库

4》framework为么既是静态库又是动态库:系统的.framework是动态库;我们自己建的.framework是静态库

5》.a和.framework的区别:

 5.1》.a是一个纯二进制文件;.framework除了有二进制文件还有资源文件

 5.2》.a不能直接使用,至少要有.h配合,.framework文件可以直接使用  

    .a + .h + sourceFile =  .framework

2、静态库的特点:

 1》使App二进制文件变大

 2》使用时,需要手动导入静态库依赖的其他类库

 3》导入静态库的应用可以减少对外界的依赖,如果导入的是三方动态库,动态库找不到会崩掉,例如 lib not found

 4》静态库优点,减少耦合性,静态库中不能包含其他静态库,使用的时候要另外导入其依赖库,最大限度的保证每一个静态库都是独立的,不会重复引用

3、动态库特点:

动态库:.dylib和.tbd结尾的都是动态库

  1》平时的系统库都放在ios系统中,在打包应用程序的时候这些库不会拷贝到程序中,当需要使用时会从ios系统中加载他们,因此,动态库也被称作共享库。编译时才载入的特性,可以随时对库进行替换,而不需要重新编译代码

  2》这些库都是所有应用公用的

  3》可以包含静态库,也能自动link所需要的依赖库

  4》在导入动态库的时候需要在Embedded Binaries中导入,不然会报错:image not found

  注意:我们自己做的动态库与系统动态库的区别:自己做的动态库需要embed进项目,也就是要拷贝到目标程序中,这就不太像动态库的特性了,苹果可能是基于安全考虑的

 

Framework既可以是静态库也可以是动态库,这取决于编译成的Mach-O

4、为什么要用库:

库(Library)其实就是一段编译好的的二进制代码,加上头文件就可以供别人使用,一般两种情况需要编成库:

1》代码需要给别人使用,但不希望别人看见源码,需要以库的形式封装,只暴露头文件

2》对于某些改动不太大的代码,例如很多大公司常用且很少变动的模块都会编译成库 1:节省编译时间。2:方便代码管理

因为库已经是编译好的二进制文件,所以编译的时候只需要link一下即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值