zoukankan      html  css  js  c++  java
  • 为什么要做静态库


    01. 为什么要做静态库
    ================================================================================

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

    2>  在企业开发中,一些核心技术或者常用框架,出于安全性和稳定性的考虑,也会提供静态库给程序员使用

    02. 静态库的特点
    ================================================================================
    .a + .h

    03. 静态库简单演练
    ================================================================================

    1>  新建CZTools项目
    2>  创建一个类方法,实现一个简单的加法
    3>  编译
    #   注意,在编译静态库时,需要编译两个版本 -> 真机(arm) | 模拟器(i386)
    4>  新建项目将编译生成的.a + .h拖到项目中使用

    04. 静态库中的资源包的使用
    ================================================================================

    问题:有些第三方库会使用到一些图片素材,例如公司的logo等。

    但是由于Xcode默认在编译时会把所有的素材文件导入到mainBundle中,为了避免与使用静态库的程序冲突。
    在静态库中如果要使用图片素材,会利用bundle的手段

    1>  建立bundle,并且向其中添加图片
    2>  创建一个类方法,返回图片
    3>  编译
    4>  调用方如果需要使用,需要导入 .h + .a + XXX.bundle

    05. 静态库中的自定义视图
    ================================================================================
    问题:程序需要测试
    静态库如何测试呢?

    创建复合项目

    1>  复习块代码传值

    06. 静态库的使用
    ================================================================================

    新建项目将编译生成的.a + .h拖到项目中使用

    07. 静态库的种类
    ================================================================================

    静态库文件的版本(4种)
    1.真机-Debug版本
    2.真机-Release版本
    3.模拟器-Debug版本
    4.模拟器-Release版本

    调试版本 VS 发布版本
    --------------------------------------------------------------------------------
    - 调试版本会包含完整的符号信息,以方便调试
    - 调试版本不会对代码进行优化

    - 发布版本不会包含完整的符号信息
    - 发布版本的执行代码是进行过优化的
    - 发布版本的大小会比调试版本的略小
    - 在执行速度方面,发布版本会更快些,但不意味着会有显著的提升

    08. 静态库的合并
    ================================================================================

    # 检测.a的类型
    $ lipo -info libCZTools.a

    # 合并.a
    lipo -create Debug-iphoneos/libCZTools.a Debug-iphonesimulator/libCZTools.a -output libCZTools.a

    # 合并.a的好处,开发过程中既可以在真机上调试,也可以在模拟器上调试
    # 合并.a的坏处,如果静态库太大,合并打包后,会非常大,因此很多第三方的静态库的.a是区分版本的
    # 今后在使用.a时一定注意版本
  • 相关阅读:
    CentOS 6.4下Squid代理服务器的安装与配置
    从C++到objectivec[转]
    在Objectivec里面使用property教程【转】
    Socket常用的数据结构【转】
    iOS 5 Storyboard 学习之 Tabbar Controller,Navigation Controller (1)
    Linux Socket编程(不限Linux)
    重要的套接字函数[转]
    HTTP,TCP/IP
    网络编程socket之bind函数[转]
    linux 下遍历目录中的目录项
  • 原文地址:https://www.cnblogs.com/lan1x/p/5329119.html
Copyright © 2011-2022 走看看