zoukankan      html  css  js  c++  java
  • ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)

     创建静态库可能出于以下几个理由:

    1.你想将工具类代码或者第三方插件快捷的分享给其他人而无需拷贝大量文件。
    2.你想让一些通用代码处于自己的掌控之下,以便于修复和升级。
    3.你想将库共享给其他人,但不想让他们看到你的源代码

    Xcode6创建静态库详解(Cocoa Touch Static Library)

    一。创建静态库文件

    打开Xcode, 选择File ----> New ---> Project。 新建工程。

    选择iOS ----> Framework & Library ---> Cocoa Touch Static Library。

    点击Next。创建工程

    工程目录:

    在头文件StaticTest1.h中声明方法

    #import <Foundation/Foundation.h>
    
    @interface StaticTest1 : NSObject
    
    -(void)testStaticLib;
    
    @end
    

      

     

    在StaticTest1.m中实现方法

    #import "StaticTest1.h"
    
    @implementation StaticTest1
    
    -(void)testStaticLib
    {
        NSLog(@"This is a static library test");
    }
    
    @end
    

      

    二。创建通用静态库

    通过xcode编译出的静态库.a文件因为支持的cpu架构不同而分为iOS Device真机(armv7 arm64), iPhone5(i386),iPhone5s(x86_64)等版本,各个版本的.a文件不能混用,为了解决这个问题需要制作通用的静态库文件

    依次使用iOS Device -> iPhone5 ->iPhone5s在Products目录下生成libStaticTest1.a文件(文件名从红色变为黑色既为编译成功),必须先编译iOS Device的.a文件,不然可能编译不通过

    通过右键.a文件->show in finder 找到文件libStaticTest1.a,依次重命名libStaticTest1s.a,libStaticTest15.a,libStaticTest15s.a, 名字可以随意

    使用mac下的终端命令行工具执行合并语句

    lipo -create /Users/outeki/Desktop/libStaticTest1s.a /Users/outeki/Desktop/libStaticTest15s.a /Users/outeki/Desktop/libStaticTest15.a -output /Users/outeki/Desktop/test.a
    
    文件路径可以随意放置,我将文件都放在了桌面上方便写合并语句,注意三个文件路径都用空格分开,/Users/outeki/Desktop/test.a既为生成的通用静态库文件

    如果你不知道每个.a文件支持的系统,可以通过lipo -info命令行来查看具体信息

    lipo -info /Users/outeki/Desktop/libStaticTest1s.a
    

      

     如果需要将通用静态库分离成各个版本的静态库,可以参考文章 http://www.cnblogs.com/wengzilin/p/3800856.html

    三。使用静态库

    新建一个ios项目,并创建lib文件夹,将头文件StaticTest1.h和test.a文件加入项目

    在ViewController.m中import头文件,即可使用头文件中定义的方法了

    #import "ViewController.h"
    #import "StaticTest1.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
                
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        StaticTest1 *test = [[StaticTest1 alloc] init];
        [test testStaticLib];
        
    }
    
    @end
    

      

    测试输出:

    四.知识补充

    到此静态库的介绍基本结束,如果你想自定义静态库的头文件,可以在静态库工程中新建一个新的.h头文件,用其替换掉copy file中配置的默认.h头文件

    添加Public.h头文件

    在public.h中引入可以公开的头文件

    #import "StaticTest1.h"
    

      

    在配置文件Build Phases ->Copy File中修改公共接口文件 (Xcode5以前是Copy Header)

    Command+R执行工程即可得到对应的.h和.a文件

    如何使用workspace管理静态库源码和原生app代码将在下一篇讨论

  • 相关阅读:
    TMainMenu 类 手动建立菜单 : 指定快捷键《转》
    确定多重选择列表控件 (List Control) 中的选定内容
    【320K】大峡谷The Music of The Grand Canyon
    35种音乐的分类
    ASP中常用的变量命名规则
    关于DBF文件导入问题
    ASP.NET里的变量命名规则
    ASP中数据库安全问题之我见
    用err.raise自定义错误信息
    关于编程风格的讨论 PioneerMan(原作)
  • 原文地址:https://www.cnblogs.com/anywherego/p/3934648.html
Copyright © 2011-2022 走看看