一、静态库
静态库是指在我们的应用程序中,一些公共的代码(工具代码),需要被提取出来,供别人使用,或者自己其他工程反复使用。我们可以把这些代码编译成“库文件”。
编译好的“库”是在链接步骤中,链接器从库文件中取出所需要的代码,复制到生成的可执行文件中。
二、编译原理
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.反向传值