美文网首页
一文带你快速分清静态库-动态库-Framework

一文带你快速分清静态库-动态库-Framework

作者: 清晨一杯豆浆 | 来源:发表于2021-06-25 11:13 被阅读0次

库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式。

库的分类

开源库

源代码是公开的,可以看到每个实现文件的实现,例如GitHub上的常用的开源库:AFNetworking、SDWebImage等;

闭源库

不公开源代码,是经过编译后的二进制文件,看不到具体的实现。闭源库又分为静态库动态库

静态库

存在的形式

.a
.framework

使用方式
//.a : 可以看做所有实现文件加密后的一个二进制文件
//.h : 头文件用户暴露可用的接口(方法)
.a + .h

动态库

存在的形式

.dylib
.framework

静态库和动态库的区别

  • .a文件肯定是静态库,.dylib肯定是动态库,.framework可能是静态库也可能是动态库;
  • 静态库在链接时,会被完整的复制到目标程序中,如果多个App都使用了同一个静态库,那么每个App都会拷贝一份,缺点是使应用程序变大,浪费内存。
  • 动态库不会复制,只有一份,程序运行时动态加载到内存中,系统只会加载一次,多个程序共用一份,编译时只存储了指向动态库的引用,节约了内存。与此同时,也有相应的缺点,即运行时加载会损耗部分性能,并且依赖外部的环境,如果库不存在或者版本不正确则无法运行。

Framework

实际上是一种打包方式,将库的二进制文件、头文件和有关的资源文件打包到一起,方便管理和分发。

.a + .h + .bundle = .framework

使用方式

使用.a时需要同时将.a 和 .h 文件拖入到工程中,使用.framework时直接将这个文件夹拖入进去即可,因为.framework文件夹中已经包含了.h文件。

相关文章

网友评论

      本文标题:一文带你快速分清静态库-动态库-Framework

      本文链接:https://www.haomeiwen.com/subject/rannyltx.html