01-静态库和动态库的简介

Catalogue

1,什么是库?

库就是程序代码的集合,是共享程序代码的一种方式。

2,库的分类(开源库和闭源库)

开源库: 公开源代码,能看到具体的实现。例如:MJExtension, MJRefresh, AFNetworking

闭源库: 不公开源代码,是经过编译后的二进制文件,看不到具体实现。分为:静态库和动态库

3,静态库的存在形式: .a 和 .framework

4, 动态库的存在形式: .framework 和 .dylib

5,静态库和动态库的区别

  • 1: 静态库在链接时,会被完整的复制到可执行文件中,被多次使用,就有多份拷贝。
  • 2: 动态库不会复制,只有一份,程序运行时动态加载到内存;系统只加载一次,多个程序公用,节省内存。
  • 3: 但是,项目中如果使用了自己的动态库,不允许上架。注意: 苹果对ios8开放动态库加载dylib的接口,也就是说,开放了动态库挂载。

6,静态库的使用场景

  • 1, 保护自己的核心代码。例如百度地图,友盟等。
  • 2, 将MRC的项目,打包成静态库,可以在ARC下直接使用,不需要转换。

7,静态库的特点: .a文件 + .h文件。 看不到具体的实现。