• 这两个东西都是编译好的二进制文件。就是用法不同而已。为什么要分为动态和静态两种库呢?先看下图:

  • 我们可以很清楚的看到:

    • 对于静态库而言,在编译链接的时候,会将静态库所有文件都添加到 目标 app 可执行文件中,并在程序运行之后,静态库app 可执行文件 一起被加载到同一块代码区中。

      • app 可执行文件: 这个目标 app 可执行文件就是 ipa解压缩后,再显示的包内容里面与app同名的文件。
    • 对于动态库而言,在编译链接的时候,只会将动态库被引用的头文件添加到目标** app 可执行文件,区别于静态库动态库** 是在程序运行的时候被添加另外一块内存区域。

    • 下面看下苹果的官方文档中有两句对动态库静态库的解释。

      • A better approach is for an app to load code into its address space when it’s actually needed, either at launch time or at runtime. The type of library that provides this flexibility is called dynamic library.
      • 动态库:可以在 运行 or 启动 的当应用真正需要的时候加载到内存中,加载到一块*独立的于 app * 的内存地址中
      • When an app is launched, the app’s code—which includes the code of the static libraries it was linked with—is loaded into the app’s address space.Applications with large executables suffer from slow launch times and large memory footprints

      • 静态库:当程序在启动的时候,会将 app 的代码(包括静态库的代码)一起在加载到 app 所处的内存地址上。相比于动态库 的方案,使用静态库将花费更多的启动时间和内存消耗。还会增加可执行文件的大小。
  • 举个

    iOS 静态库和动态库的更多相关文章

    1. iOS静态库和动态库的区别

      一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用 ...

    2. iOS 静态库和动态库的区别&静态库的生成

      linux中静态库和动态库的区别 一.不同 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 1. 静态函数库 这类库的名字一般是libxxx.a:利用静态函 ...

    3. 【iOS开发之静态库、动态库】

      什么是库? 库 就是程序代码的集合, 是共享程序代码的一种方式,库一般分两类:开源库和闭源库.github中共享一般是开源库:闭源库分为:静态库和动态库,闭源库不开放源代码,是经过编译的二进制文件,一 ...

    4. iOS 静态库,动态库与 Framework 浅析

      静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...

    5. IOS 静态库 和 动态库

      库从本质上市一中可执行的二进制格式,可以被载入内存中执行   iOS 中的静态库有 .a 和 .framework 两种形式;  动态库有  .dylib   和  .framework 两种, 后来 ...

    6. iOS中的静态库与动态库,区别、制作和使用

      如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库: ...

    7. iOS 中的静态库与动态库,区别、制作和使用

      如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库: ...

    8. iOS 静态库和动态库(库详解)

      什么是库 ? 库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式.库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行. 库的分类 开源库:源代码是公开的,可以看到每个实现 ...

    9. (转)iOS静态库与动态库的区别

      一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用 ...

    10. iOS 静态库,动态库与 Framework

      iOS 静态库,动态库与 Framework     静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢 ...

    随机推荐

    1. java多线程下载和断点续传

      java多线程下载和断点续传,示例代码只实现了多线程,断点只做了介绍.但是实际测试结果不是很理想,不知道是哪里出了问题.所以贴上来请高手修正. [Java]代码 import java.io.File ...

    2. hdu 1423

      最长公共上升子序列:O(n*m)的算法: #include<cstdio> #include<cstring> #define maxn 1000 using namespac ...

    3. POJ 1404 I-Keyboard (DP)

      http://poj.org/problem?id=1404 题意 :手机上的要发短信的话,“我”字需要先按一下9键,再按3下6键,所以,现在想要重新布局每个键上的字母数,让最后的那个值最小,也就是说 ...

    4. [wikioi]装箱问题

      http://wikioi.com/problem/1014/ 01背包问题是最经典的动态规划之一,这道题目甚至是这其中还简单的一种,因为价值就是本身的重量了.本来比如,w是总重量限制,v[]是每个的 ...

    5. QT中的字符串处理函数

      Fn 1 : arg 这个函数的具体声明不写了,它有20个重载,典型的示例代码如下: 1: #include <QtCore/QCoreApplication> 2: #include & ...

    6. UL LI 布局 TAB 切换条

      web页面实现tab的功能有几种实现方式,下面是使用UL LI DIV方式实现的tab. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...

    7. web storm使用和配置

      官网:http://www.jetbrains.com/webstorm/ webStorm,File=>setting=>JavaScript-Libraries How WebStor ...

    8. Android 常用UI控件之TabHost(3)在4.0不显示图标的解决方案

      1,自定义 TabWidget 上每个tab的view 2,用多个图片

    9. cnb

      <style type="text/css"> .fieldset_s{border: 1px #dedede solid;padding: 19px; color: ...

    10. zoj 1033 与其说是搜索,不如说是枚举

      zoj 与其说是搜索,不如说是枚举,只不过是通过搜索来实现的罢了. 主要是要注意好闰年的判断,特别是要注意好一串数字的划分. 题意其实我也看了一个晚上,才渐渐的看懂. 题意: 给你一个字符串,其中包含 ...