美文网首页iOS面试知识OC面试相关iOS技术
iOS之动态库和静态库的区别

iOS之动态库和静态库的区别

作者: 枫叶无处漂泊 | 来源:发表于2022-08-07 00:18 被阅读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都是静态库

相关文章

  • iOS静态库与动态库的区别与打包

    iOS静态库与动态库的区别与打包iOS静态库与动态库的区别与打包

  • iOS开发集锦之 2017.04.17

    1. iOS 静态库,动态库与 Framework 浅析 作者:Jenaral描述: 静态库与动态库的区别;iOS...

  • iOS 封装.framework 以及使用

    .framework是什么? “静态库”和“动态库”有什么区别? iOS里静态和动态库形式 .a与.framewo...

  • iOS静态库及动态库

    2018-06-19 浅析静态库链接原理编译原理以及什么是静态库和动态库 转之: iOS 静态库和动态库(库详解)...

  • 创建静态库

    iOS深入学习(创建静态库static library) 库包含静态库和动态链接库,他们之间区别是:静态库可以编译...

  • iOS 中库和Framework

    IOS静态库和Framework区别 一、什么是库? 库是共享程序代码的方式,一般分为静态库和动态库。 二、静态库...

  • 组件化-动态库实战

    起因 理论功底 动态库和静态库 介绍 静态库和动态库的区别 举个例子, iOS 项目中使用 Embeded Fra...

  • 动态库打包

    强调:使用动态库,要求应用最低支持系统为IOS8 1:静态库和动态库区别 静态库:存在 .a 和 .framewo...

  • iOS静态库和动态库的区别

    iOS开发中静态库和动态库区别: 静态库和动态库是相对编译期和运行期的:静态库在程序编译时会被链接到目标代码中,程...

  • iOS静态库和动态库的使用

    iOS开发中静态库和动态库区别 静态库和动态库是相对编译期和运行期的:静态库在程序编译时会被链接到目标代码中,程序...

网友评论

    本文标题:iOS之动态库和静态库的区别

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