• iOS学习之库


    一、什么是库

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

    二、库的分类

    根据源代码的公开情况,库可以分为2种类型。

    1.开源库

    公开源代码,能看到具体实现。

    比如,SDWebImage、AFNetworking

    2.闭源库

    不公开源代码,是经过编译后的二进制文件,看不见具体实现。

    三、静态库和动态库

    1.动态库和静态库的存在形式

    静态库:.a和.framework

    动态库:.dylib和.framework

    2.使用区别

    静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝。如下图:

    动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。如下图:

    3.查看静态库支持的架构(命令)

    lipo -info XXX.a

     

    4.架构列表

    i386:iPhone模拟器  3GS—>iPhone5

    x86_64:iPhone模拟器 5s 6plus

    armv7:iPhone 3GS 4s

    armv7s:iPhone 5 5c

    arm64:iPhone 5s 6plus

    5.合并静态库(同时支持不同的架构)

    /*将XXX1.a和XXX2.a合并生成XXX3.a (生成的XXX3.a在当前路径下)*/

    lipo –create XXX1.a XXX2.a –output XXX3.a

    6. 静态库文件的版本(4种)

    1)真机-Debug版本

    2)真机-Release版本

    3)模拟器-Debug版本

    4)模拟器-Release版本

    四、调试版本(Debug版本) VS 发布版本(Release版本)

    - 调试版本会包含完整的符号信息,以方便调试

    - 调试版本不会对代码进行优化

    - 发布版本不会包含完整的符号信息

    - 发布版本的执行代码是进行过优化的

    - 发布版本的大小会比调试版本的略小

    - 在执行速度方面,调试版本会更快些,但不意味着会有显著的提升

    五、静态库编译

    选择编译的静态库带头文件。

    操作:(.a)

    target build phases Copy files  +

    操作:(.framework)

    target build phases headers  public/private/project

    六、framework

    因为framework文件既可能是静态库,也可能是动态库。

    使用时,动态库应该添加库。(target—>general embedded binarles)(自己制作framework时,默认制作成动态库)

    framework制作成静态库:

    target build settings linking match-o type static library

  • 相关阅读:
    hdu4841 圆桌问题[STL vector]
    hdu1002 A + B Problem II[大数加法]
    hdu1501 Zipper[简单DP]
    C语言学习之结构体
    C++学习之从C到C++
    一键自动格式化你的代码
    C标准库string.h中几个常用函数的使用详解
    Jlink使用技巧系列教程索引
    Jlink使用技巧之合并烧写文件
    Jlink使用技巧之烧写SPI Flash存储芯片
  • 原文地址:https://www.cnblogs.com/chars/p/4936283.html
Copyright © 2020-2023  润新知