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

库就是程序代码的集合,将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文件。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容