动态库: 1、以.tbd(以前是.dylib)或者.framework为后缀的文件,系统里面的.framework库都是动态库,入UIKit.framework,Foundation.framework等等; 2、链接时不进行复制,由系统动态加载到内存,只加载一次,可以多个程序使用,节省内存,减少app体积,原理上可以用做热更新,只是苹果不允许热更新,所以使用动态库上不了架(iOS8之前时不能使用动态库的,iOS8之后出现了App Extension,以及现在Swift需要,可以使用.framework的动态库,实现在app和Extension两者共用一个库,但是这种动态库严格意义上不能算是动态库,只能算是伪动态库,这种动态库不是放在系统上,而是放在工程的mainbundle里面,每次更新库都要重新把新版的库放在工程里面重新打包); 3、加载过程比静态库复杂,花费时间长。
静态库: 1、以.a或者.framework为后缀的文件; 2、链接时会被复制到可执行文件中,每个程序使用都会复制一次; 3、会比动态库的体积大。
如何设置: 在库工程的Build Setting ->Mach-O Type,选择Static Library就是静态库,选择Dynamic Library就是动态库(伪动态库)
|