美文网首页
iOS 动态库和静态库

iOS 动态库和静态库

作者: 西充小凡哥 | 来源:发表于2023-01-05 09:11 被阅读0次

    一、什么是库(framework)
    库是程序代码的集合,是程序开发者与其他开发者之间进行代码共享的一种方式。
    库根据源代码公开的情况可以:

    开源库

    开源库的源代码可见,比如afnetworking。

    闭源库

    闭源库的源代码不可见,是一段编译好的二进制代码

    闭源库有根据相对编译时和运行时:

    静态库
    动态库

    二、静态库和动态库区别
    1、格式上的区别:
    静态库的格式:

    .a
    .framework

    动态库的格式:

    .dylib
    .framework

    但是系统的.framework都是动态库

    2、时间上区别
    静态库:

    编译时会被拷贝到可执行文件中

    动态库:

    运行时由系统加载到内存

    3、使用上的区别:
    静态库使用:

    在编译时会被拷贝到可执行文件中,使用多次就会被多次拷贝。

    优势:

    编译完成之后,这个静态库也就没有什么作用了。

    劣势:

    增加了可执行文件的体积

    动态库使用:

    在运行时由系统加载到内存,相同的动态库只加载一次,供多个程序调用,节省内存。

    在iOS8之前,自定义的动态库是不允许使用的。但是iOS8中,随着extension的出现,动态库才开始有用武之地。

    三、怎么区分动态库和静态库
    因为.a肯定是静态库,.dylib肯定是动态库,所以区分主要针对.feamework形式
    1、通过命令行指令进行区分

    cd xx.framework
    file xx

    xx为.framwork下的二进制文件

    判断:静态库包含“current ar archive random library”字样. 动态库包含“dynamically linked shared library”字样

    2、根据是否是系统的.framework
    一般情况下:

    系统的.framework都是动态库
    非系统的都是.framework都是静态库

    作者:枫叶无处漂泊
    链接:https://www.jianshu.com/p/2a8e73fe95f0
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    相关文章

      网友评论

          本文标题:iOS 动态库和静态库

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