美文网首页简书收藏--编译原理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

    一、静态库静态库是指在我们的应用程序中,一些公共的代码(工具代码),需要被提取出来,供别人使用,或者自己其他工程反...

  • iOS静态库及动态库

    2018-06-19 浅析静态库链接原理编译原理以及什么是静态库和动态库 转之: iOS 静态库和动态库(库详解)...

  • 创建静态库

    iOS深入学习(创建静态库static library) 库包含静态库和动态链接库,他们之间区别是:静态库可以编译...

  • 编译原理以及什么是静态库和动态库

    为什么本人将编译原理和静态库,动态库放在一起讲.因为只有理解了编译的原理,才能真正明白什么是静态库和动态库. 1....

  • iOS framework静态库中使用xib和图片资源详解

    1.iOS framework静态库中使用xib和图片资源详解2.iOS从静态库加载Storyboard并创建Vi...

  • 静态库

    目录 静态库 静态库的创建 静态库的使用 一、静态库的创建 方式一(.a): 1、创建project ,new p...

  • 静态库

    静态库 静态库动态库简介 .a 静态库:被编译好的二进制文件 静态库:.a, .framework 动态库: .d...

  • Xcode7.3中构建静态库

    创建静态库 Xcode中编译静态库其实非常简单,就是新建一个静态库类型的项目,如图中所示。 但是这篇文章把这个简单...

  • Ndk生成so和a库,然后主项目进行调用

    在 NDK 开发中引入第三方静态库和动态库 静态库和动态库 静态库 静态库文件后缀一般为 .a ,利用静态库编译成...

  • iOS开发进阶四:静态库

    静态库原理 .a:静态库.framework:既有静态库也有动态库.dylib:传统意义上的动态库.xcframe...

网友评论

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

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