静态库与动态库的区别

自古美人都是妖i 提交于 2020-04-01 18:00:14

一、什么是库

        库实际上是一种代码共享的方式,主要用于代码重用和源码隐藏,通常分为动态库和静态库。

       静态库:链接时完整的拷贝至可执行文件中,被多次使用就有多份冗余拷贝。

       动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存空间。

 

二、什么是.a、.bundle、.framework

       在iOS中静态库以.a和.framework的形式存在,动态库以.dylib和.framework的形式存在。

       之所以.framework既可能是动态库又可能是静态库,是因为苹果公司禁止用户级App使用动态库,而自己却又堂而皇之的使用动态库,这就造成了iOS中系统级的.framework是动态库,用户级的.framework是静态库。

        二者区别不大,.a是纯二进制文件,.a文件不能单独使用,至少要有.h文件配合,而.framework除了二进制文件外,还包含一些资源文件(头文件,plist等),由于自身包含了头文件,所以.framework可以单独使用。

          .a和.framework两种静态库,通常都是把需要用的到图片或者xib文件存放在一个bundle文件中,而该bundle文件的名字和.a或.framework的名字相同。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!