Controller中不会调用ViewDidLoad方法
来源:互联网 发布:linux sed 不显示首行 编辑:程序博客网 时间:2024/06/01 13:15
由于以前的代码习惯,本人比较经常在Controller的init中调用self.view属性。在一般的情况下。。不会出现啥问题的。。但是。。这样调用的后果。。就会神器的使系统自动跳过ViewdidLoad 方法。 至于为什么会跳过。。我还在研究中。废话不多说 上代码。
由于是 11年的项目。。所以创建的方法还是当时用XIB的创建方法。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
UIImageView* bgView = [[UIImageViewalloc] initWithFrame:SCREEN_FRAME];
self.view = bgView;
}
return self;
}
由于在init初始化方法中调用了self.view 所以下面 viewdidLoad 方法就不会再进去了。
- (void)viewDidLoad
{
[super viewDidLoad];
在这里,我们可以看到。 在init 时 我就给View 赋上一个属性。这个时候。Controller中的View属性 就会提前创建。
我分析着 Controller 中的View 属性 也是使用懒加载的。 当我们提前调用View 系统就提前创建。
这时,当我们init初始化方法运行完后。系统就开始选择性的开始调用低层默认方法。为什么我这里会说系统选择性调用呢。。我猜测,系统调用ViewdidLoad方法时。 会先去判断 Controller 中的view 属性 是否存在。 当view属性存在时,系统选择跳过 ViewdidLoad 方法以及其他方法(其他方法 我也不清楚,但是感觉还是有的)。
当我把init初始化方法中的self.view的赋值代码注释了。就会调用ViewDidLoad方法。上面的分析仅为个人意见。仅供参考,不喜勿喷。
- Controller中不会调用ViewDidLoad方法
- java调用controller方法
- UIViewController中loadView和viewDidLoad调用时机
- springmvc项目中调用controller方法报406错误
- springmvc项目中调用controller方法报406错误
- IOS viewdidload 方法在 init 方法之前调用
- 使用addChildViewController 遇到没有加载的controller viewdidload也被调用
- javascript调用mvc Controller方法。
- java规范(二)------方法调用---springMVC中调用controller的方法
- loadView,viewDidLoad等几种方法的调用总结
- viewDidLoad在init方法之前调用的坑
- 非Controller中调用Service
- 非Controller中调用Service
- 为什么在viewDidLoad中调用presentingViewController返回nil?
- viewDidLoad什么时候调用
- viewDidLoad被提前调用
- viewDidLoad调用animateWithDuration无效
- viewdidload的调用时机
- SSM框架——以注解形式实现事务管理
- MySQL的索引单表优化案例分析
- 单点登录
- Remote Desktop Organizer远程访问时报错
- JQuery:除指定区域外点击任何地方隐藏DIV
- Controller中不会调用ViewDidLoad方法
- Android 属性动画(Property Animation) 完全解析 (上)
- kylin1.6.0构建build测试cube出错
- Tomcat工作原理
- ActivityOptionsCompat
- 使用maven创建web项目
- TestNG入门指导——include/exclude中的正则表达式
- Makefile教程
- 参数化查询原理