iOS开发 静态库和动态库

库是程序代码的集合,是程序开发者与其他开发者之间进行代码共享的一种方式。库根据源代码的公开情况可以分为开源库和闭源库。开源库的源代码可见,比如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位)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值