美文网首页简书收藏--编译原理iOS 开发 iOS Developer
18静态库_编译原理_创建静态库_异常处理_storyBoard

18静态库_编译原理_创建静态库_异常处理_storyBoard

作者: AsaGuo | 来源:发表于2016-06-11 22:42 被阅读106次

    一、静态库
    静态库是指在我们的应用程序中,一些公共的代码(工具代码),需要被提取出来,供别人使用,或者自己其他工程反复使用。我们可以把这些代码编译成“库文件”。

    编译好的“库”是在链接步骤中,链接器从库文件中取出所需要的代码,复制到生成的可执行文件中。

    二、编译原理
    1.预处理
    —展开各种宏定义
    —Import导入各种头文件,并且插入到合适的编译位置
    —删除所有的注释
    —处理所有的编译指令(如#if #endif)

    2.编译
    编译过程,就是将预处理好的文件,进行语法分析、语义分析,优化以后生成相应的汇编代码。

    汇编语言
    先说明,机器语言,机器指令的集合,就是一台电脑可以正确的执行命令,就是一系列的二进制数字,计算机会将其转换成一列高低电平(比如说二极管,一开一关),使计算机的电子器件收到驱使,并进行计算。

    汇编语言,主体汇编指令,其实就是计算机机器语言的另外一种表示方法,为了程序员便于编写。
    编译器将编译语言翻译成机器指令

    3.汇编
    使用编译器将汇编语言翻译成机器指令

    4.链接
    使用链接器将一大堆程序运行需要的目标文件,以及所依赖的库进行链接,生成可执行文件。

    三、创建静态库
    (一)创建静态库
    (二)添加静态库
    在需要的工程中添加已经发布的静态库
    1.找到静态库
    2.将静态库导入到工程

    静态库的路径

    (三)模拟器/真机 指令集

    1.查看生成的静态库支持信息

     lipo -info <library route>
    

    2.模拟器/真机 下编译的静态库,只能在各自的环境中使用,指令集不一样
    解决办法:
    通过命令行来合并多种环境下生成的静态库:

     lipo -create <library route1 library route2 …… library routen> -output <library route(new)>
    

    注:cocoapods就是把三方库打包成为静态库,来帮我们管理。

    源码:
    1.分别查看两个库文件所支持的指令集

     $ lipo -info ~/库1.a 
      Non-fat file: ~/库1.a is architecture: i386
     $ lipo -info ~/库2.a 
      Architectures in the fat file: ~/库2.a are: armv7 arm64 
    

    2.将两个库合并

     $ lipo -create ~/库1.a ~/库2.a -output ~/库1And库2.a 
    

    3.查看合并后的库所支持的指令集

     $ lipo -info ~/库1And库2.a 
      Architectures in the fat file: ~/库1And库2.a are: i386 armv7 arm64 
    

    错误:
    使用有Category静态库时,不会自动加载类别中的方法,需要添加-all_load

    方法2:

    其他:http://www.tuicool.com/articles/fyEnyy

    四、异常处理
    Version:真正的appStore上的版本号
    Build:某个Version下的内部测试的版本号

    info.plist中对应的版本号:

        //异常对象NSException
        //用于捕获异常的方法
        NSSetUncaughtExceptionHandler(&getExcetion);
    

    五、storyBoard

    传值
    1.添加Class
    2.解注释

    (二)从VC2返回VC1
    情况1:让button直接关联show方法
    情况2:关联Present Modally
    1.在VC1中添加方法

    - (IBAction)unwindFromSecondForSegue:(UIStoryboardSegue *)unwindSegue;
    - (IBAction)unwindFromSecondForSegue:(UIStoryboardSegue *)unwindSegue
    {
        unwindSegue.destinationViewController.view.backgroundColor = [UIColor greenColor];
    }
    

    2.在MainstoryBoard中的VC2中关联按钮

    (三)使用Identifier判断页面方向
    两种情况:
    1.VC1→VC2
    2.VC2→VC1

    (四)添加UITableViewCell的.h.m文件

    在UITableView的XIB中使用Cell

    关联Cell中的控件

    设置单元格

    参考文献:禅与Object-C编程艺术

    测试:
    1.storyBoard
    2.博客

    一、删除ViewController
    二、添加新的ViewController
    (一)逻辑1
    MainStoryBoard中:
    +TabBarController
    -ViewController
    +VC1及Nav
    VC1后+VC2
    库文件:
    +TabBarController VC1 VC2
    注意:关联库即xib
    (二)逻辑2
    MainStoryBoard中:
    +TableViewController 及nav 及单元格中的View(如Label)
    库文件:
    +TableViewController
    +TableViewCell(即xib)
    三、实现功能
    1.传值
    2.反向传值

    相关文章

      网友评论

        本文标题:18静态库_编译原理_创建静态库_异常处理_storyBoard

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