iOS开发 静态库和动态库

news/2024/10/31 3:19:55/

库是程序代码的集合,是程序开发者与其他开发者之间进行代码共享的一种方式。库根据源代码的公开情况可以分为开源库和闭源库。开源库的源代码可见,比如afnetworking;闭源库的源代码不可见,是一段编译好的二进制代码。闭源库又根据相对编译时和运行时分为静态库和动态库。

一.动态库和静态库的区别。

  1. 格式区别:
    静态库的格式:.a 和 .framework 。
    动态库的格式:.dylib 和 .framework。其中,系统的.framework都是动态库。
  2. 使用上的区别:
    前面说了,静态库和动态库的区别主要是根据编译时和运行时来区分的。
    (1)静态库:在编译时会被拷贝到可执行文件中,使用多次就会被多次拷贝。但是编译完成之后,这个静态库也就没有什么作用了,这是他的优势。可同时它增加了可执行文件的体积,这也变成了它的劣势。
    (2)动态库:在运行时由系统加载到内存,相同的动态库只加载一次,供多个程序调用,节省内存。在iOS8之前,自定义的动态库是不允许使用的。但是iOS8中,随着extension的出现,动态库才开始有用武之地。

二. 怎么分区一个库是动态库还是静态库?

  1. 其实,这种区分主要是针对.framework,因为.a肯定是静态库,.dylib肯定是动态库。区分静态库还是动态库需要通过命令行进行:
    (1)cd xx.framework
    (2)file xx 注释:xx为.framwork下的二进制文件
    (3)判断:静态库包含“current ar archive random library”字样。动态库包含“dynamically linked shared library”字样
    在这里插入图片描述
    很明显,上面是一个静态库。

  2. 同时,我们可以在结果中可以看到三个iOS指令,这里在对iOS指令集做一个扩展。iOS指令集包含移动设备指令集和Mac指令集。
    .移动设备指令集
    (1)arm64(5s以上)
    iphone机型:iphone Xs Max| iphone Xs | iphone XR | iphone X| iphone8s plus | iphone 8s | iphone8 plus | iphone8 | iphone7s plus | iphone7s | iphone6s plus | iphone 6s |iphone SE | iphone5s
    ipad机型:iPad Pro | iPad Air2 | iPad Air
    ipad mini机型:iPadmini2 | iPadmini3 | iPadmini4
    (2)armv7s:(5,5c)
    iphone机型:iPhone5|iPhone5C
    ipad机型:iPad4(iPad with Retina Display)
    iPad mini机型:无
    (3)armv7:(4,4s)
    iphone机型:iPhone4|iPhone4S
    ipad机型:iPad|iPad2|iPad3(The New iPad)
    iPad mini机型:iPad mini
    .mac指令集
    (1)i386(32位)
    (2)x86_64(64位)


http://www.ppmy.cn/news/307842.html

相关文章

C#学习笔记(七):ListProduct list = new ListProduct()

// 商品集合信息List<Product> list new List<Product>(){new Product() {Id 1,Name "IPhone4",Price 1999,Remark "心动不如行动"},new Product() {Id 2,Name "IPhone4s",Price 2999,Remark "心动不如行动"},ne…

js中文对象数组转换为普通数组对象

后台返回的是这样的都是中午并且是动态的&#xff0c;都没有属性值 {“颜色”:[“红色}”,“黑色”],“型号”:[“iphone6s”,“iphone7s”],“内存”:[“2G”]} 第一步转换为json对象 let specListData JSON.parse(res.data.data.objs) let temp [] //定义空数组 //获取元素…

想要学习C++,就必须要学习C语言吗?

在学习C之前&#xff0c;你必须先学习C语言吗&#xff1f; C读作C加&#xff0c;简称CPlusPlus。顾名思义&#xff0c;C是在C语言的基础上增加新特性&#xff0c;玩新花样&#xff0c;所以叫CPlusPlus&#xff0c;就像iPhone7S和iPhone7.Win10和Win7的关系一样。 在学习C之前&…

苹果手机还原后无法激活

写在前面&#xff0c;当我们使用的手机是iPhone7s plus 及其以下版本手机时&#xff0c;系统还原会出现【无法激活】的问题。下面就告诉你如何解决这一问题&#xff1a; 找一台联网电脑下载最新版本的iTunes -> 在苹果官网上下载将苹果手机连接Wifi -> 此时&#xff0c;…

Java语法核心——面向对象编程

目录 面向过程思想概述 面向对象思想概述 面向对象思想特点及举例 类与对象的关系 类的定义 类与对象的案例(demo02) 对象内存存储机制 成员变量和局部变量的区别 private关键字 封装 ​编辑 this关键字 ​编辑 构造方法 ​编辑 标准类的代码写法和测试 面向对象…

苹果iPhone7s怎么查询激活时间?

摘要: 之前有一些网友给小编留言问苹果iphones7s怎么查询激活时间&#xff0c;小编一开始并没有把这个问题放心上。不过最近问苹果怎么查询激活时间的人甚至有时候比问 苹果手机找回方法的人还要多&#xff01;因为现在市面上购买到假iPhone7的 ... 之前有一些网友给小编留言问…

NLP自然语言处理-机器学习和自然语言处理介绍(四)

NLP自然语言处理-机器学习和自然语言处理介绍-事件抽取 一&#xff0e;案例介绍 1.背景 事件抽取技术的核心价值&#xff0c;是可以把半结构化、非结构化数据转换为对事件的结构化描述&#xff0c;进而支持丰富的下游应用。 比如说我们要为一些人物整理年表&#xff0c;如图&am…

什么是M-LAG?为什么需要M-LAG?

M-LAG&#xff08;Multichassis Link Aggregation Group&#xff09;提供一种跨设备链路聚合的技术。M-LAG通过将两台接入交换机以同一个状态和用户侧设备或服务器进行跨设备的链路聚合&#xff0c;把链路的可靠性从单板级提升到设备级。同时&#xff0c;由于M-LAG设备可以单独…