简书收藏--编译原理iOS 开发 iOS Developer

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

2016-06-11  本文已影响106人  AsaGuo

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

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

二、编译原理
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.反向传值

上一篇 下一篇

猜你喜欢

热点阅读