iOS
概述
- 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
- 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。
静态库以及动态库的形式
- 静态库:.a和.framework
- 动态库:.dylib和.framework
.framework为什么既是静态库也是动态库?
- 系统的.framework是动态库,开发者自己建立的.framework是静态库。
静态库 .a 与 .framework 有什么区别?
- 内容不同:.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件;
- 使用方式不同:.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用;
- 总结:.a + .h + sourceFile = .framework,建议用.framework。
iOS 中为什么使用静态库?
- 和别人分享你的代码库,但不想让别人看到你代码的实现。
- 可以把固定的业务模块化成静态库,实现iOS程序的模块化。
- 总结:方便共享代码,便于合理使用。
引用参考自:
Linux
代码被载入的时刻不同以及体积大小不同
- 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大。
- 动态库(共享库)的代码在可执行程序运行时才载入内存,在编译过程中仅简单的引用,因此代码体积比较小。
份数不同
- 不同的应用程序如果调用相同的库,那么在内存中只需要有一份该动态库(共享库)的实例。
动态库的优点
- 静态库和动态库的最大区别,静态情况下,把库直接加载到程序中,而动态库链接的时候,它只是保留接口,将动态库与程序代码独立,这样就可以提高代码的可复用度,和降低程序的耦合度。
网友评论