init()方法调用及扩展
2015-12-07 17:27
323 查看
我们在开发的过程中避免不了和系统的一些函数 方法 打交道
但是我们应该考虑一个问题 这些方法是什么时候调用的 调用顺序是什么
我们不能仅仅的限于使用这些方法 应该深入地了解这些方法的原理是什么
举个简单的例子
是系统自动调用?
还是我们手动调用?
什么时候调用?
我想会有些人认为 这两个方法的调用是系统帮我们自动调用的
其实不然
我们只有创建控制器的方式是init这样 的方式 系统才会走这两个方法
如果使用init创建控制器
先走的方法是
然后在[super init] 内部调用
研究方法 要多提问 多打断点 进行单步执行
但是我们应该考虑一个问题 这些方法是什么时候调用的 调用顺序是什么
我们不能仅仅的限于使用这些方法 应该深入地了解这些方法的原理是什么
举个简单的例子
- (instancetype)init { self = [super init]; if (self) { } return self; } - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { [self leftVC]; [self rightVC]; [self postNotButton]; [self pushLeft]; [self pushRight]; } return self; }看看上面两个函数 什么时候调用?
是系统自动调用?
还是我们手动调用?
什么时候调用?
我想会有些人认为 这两个方法的调用是系统帮我们自动调用的
其实不然
我们只有创建控制器的方式是init这样 的方式 系统才会走这两个方法
如果使用init创建控制器
先走的方法是
self = [super init];
然后在[super init] 内部调用
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { } return self; }我们可以在这两个方法中做一些初始化...操作
研究方法 要多提问 多打断点 进行单步执行
相关文章推荐
- <2>Android Camera 架构简析1
- mysql导数据及注意事项
- 对加密数据的高效相似性查询(二)
- java之运算符
- slice()方法 和splice 方法的区别。。。
- Qt学习(3)
- 运维人员需要产品观
- linux那些鲜为人知的小秘密
- Android Studio 断点调试和高级调试
- Git-0.99 README 第一部分 基本对象
- jQuery + CSS3 实现花瓣剥落特效
- 矩阵存储之三
- 堆排序
- 如何允许外网可以连接mysql数据库
- java之hashCode
- Python机器学习库scikit-learn实践
- Java线程编程中Thread类的基础学习教程
- 第四周项目三--单链表的应用
- Java获取文件类型Mime Type的各种方法
- 颜色转换 IOS中十六进制的颜色转换为UIColor