1.什么是库?
- 库就是程序代码的集合,是共享程序代码的一种方式
2.库的分类?
- 开源库:
- 公开源代码,能看到具体实现
- 例如MJExtension、AFNetWorking...
- 闭源库
- 不公开源代码,是经过编译后的二进制文件,看不到具体实现
- 主要分为:静态库和动态库
3.静态库的存在形式?
- .a
- .framework
4.动态库的存在形式?
- .dylib
- .framework
5.静态库和动态库的区别?
- 静态库在链接时,会被完整的复制到可执行文件中,被多次使用,就有多份拷贝
- 动态库则不会复制,只有一份,程序运行时动态加载到内存,系统只加载一次,多个程序共用,节省内存
- 但是!!!项目中如果使用到自己的动态库,不允许上架!再但是!!!WWDC2014上公布的 苹果对iOS8开放动态加载dylib的接口,也就是说开放了动态库挂载
6.静态库应用场景?
- 保护自己的核心代码
- 国内的企业,掌握有核心技术,同时是又希望更多的程序员来使用其技术,因此采用“闭源”的方式开发使用
- 例如:百度地图,ShareSDK
- 将MRC的项目,打包成静态库,可以在ARC下直接使用,不需要转换
7.静态库的特点?
- .a + .h
- 看不到具体实现的代码