美文网首页
一文带你快速分清静态库-动态库-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