美文网首页
组件22-二进制:静态库简介

组件22-二进制:静态库简介

作者: Lovell_ | 来源:发表于2017-07-13 11:36 被阅读25次

    二进制解决的什么问题:虽然使用了组件化, 但依然是源码, 如果工程庞大, 编译速度依然非常慢,所以, 可以直接把私有库打包成为一个库文件, 进行使用。

    一、什么是库?

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

    二、库的分类?

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

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

    三、静态库的存在形式?

    .a 和 .framework

    四、动态库的存在形式?

    .dylib(后来.tbd)(从本质上说tbd是个描述文件,它里面是关联dylib动态库的)
    .framework

    五、静态库和动态库的区别?

    1. 静态库在链接时, 会被完整的复制到可执行文件中; 被多次使用, 就有多份拷贝;

    2. 动态库则不会复制, 只有一份. 程序运行时动态加载到内存; 系统只加载一次, 多个程序共用, 节省内存;

    3. 但是!!!! 项目中如果使用到自己的动态库, 不允许上架!

    4. 再但是!!! WWDC2014上公布的 苹果对ios8开放动态加载dylib的接口 也就是说 开放了动态库挂载。

    六、静态库应用场景?

    1. 保护自己的核心代码。国内的企业,掌握有核心技术,同时是又希望更多的程序员来使用其技术,因此采用"闭源"的方式开发使用。例如:百度地图,友盟,JPush等

    2. 将MRC的项目,打包成静态库,可以在ARC下直接使用,不需要转换。(编译好的文件不存在内存泄露,所以.a文件可以直接在ARC和MRC下使用)

    3. 提高工程的编译速度。

    七、静态库的特点?

    .a + .h;(.a就是实现文件,.h是接口文件)
    看不到具体实现的代码;

    相关文章

      网友评论

          本文标题:组件22-二进制:静态库简介

          本文链接:https://www.haomeiwen.com/subject/jalwhxtx.html