zoukankan      html  css  js  c++  java
  • iOS库--.a与.framework

    一、什么是库?

    库是共享程序代码的方式,一般分为静态库和动态库。

    二、静态库与动态库的差别?

    静态库:链接时完整地拷贝至可运行文件里。被多次使用就有多份冗余拷贝。

    动态库:链接时不复制。程序执行时由系统动态载入到内存,供程序调用,系统仅仅载入一次,多个程序共用。节省内存。

    三、iOS里静态库形式?

    .a和.framework

    四、iOS里动态库形式?

    .dylib和.framework

    五、framework为什么既是静态库又是动态库?

    系统的.framework是动态库,我们自己建立的.framework是静态库。

    六、a与.framework有什么差别?

    .a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。

    .a文件不能直接使用,至少要有.h文件配合,.framework文件能够直接使用。

    .a + .h + sourceFile = .framework。

    建议用.framework.

    七、为什么要使用静态库?

    方便共享代码。便于合理使用。

    实现iOS程序的模块化。

    能够把固定的业务模块化成静态库。

    和别人分享你的代码库,但不想让别人看到你代码的实现。

    开发第三方sdk的须要。

    八、制作静态库时的几点注意:

    1 注意理解:不管是.a静态库还.framework静态库,我们须要的都是二进制文件+.h+其他资源文件的形式,不同的是,.a本身就是二进制文件,须要我们自己配上.h和其他文件才干使用。而.framework本身已经包括了.h和其他文件。能够直接使用。

    2 图片资源的处理:两种静态库,一般都是把图片文件单独的放在一个.bundle文件里,一般.bundle的名字和.a或.framework的名字同样。

    .bundle文件非常好弄,新建一个目录,把它改名为.bundle就能够了。右键,显示包内容能够向当中加入图片资源。

    3 category是我们实际开发项目中经经常使用到的,把category打成静态库是没有问题的,可是在用这个静态库的project中。调用category中的方法时会有找不到该方法的执行时错误(selector not recognized)。解决的方法是:在使用静态库的project中配置other linker flags的值为-ObjC。

    4 假设一个静态库非常复杂。须要暴露的.h比較多的话。就能够在静态库的内部创建一个.h文件(一般这个.h文件的名字和静态库的名字同样),然后把全部须要暴露出来的.h文件都集中放在这个.h文件里,而那些原本须要暴露的.h都不须要再暴露了,仅仅须要把.h暴露出来就能够了。

  • 相关阅读:
    禁止WebBrowser控件弹出对话框
    c#禁止Webbrowser控件的弹出脚本错误对话框
    Spread 常用属性
    没有ID的验证码图片,调用方法将图片保存到本地
    C#网页表单自动填写实现原理
    LInqWhere
    加密与解密数据库中数据
    DataAdapter批量处理数据
    OperateXMLDateSet
    jquery json
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6923551.html
Copyright © 2011-2022 走看看