ios 启动执行初始化

  UIViewController

分为下面三种情形创建 (依次调用的方法 顺序如下)
1、StoryBoard:     1.initWithCoder   ;  2.awakeFromNib   ;  3.loadView   ;  4.viewDidLoad 

2、Xib:                  1.init  ;  2.initWithNibName  ;  3.loadView  ;  4.viewDidLoad

3、纯代码:            1.init  ;  2.initWithNibName  ;  3.loadView  ;  4.viewDidLoad     

  UIView

分为下面三种情形创建 (依次调用的方法 顺序如下)
1、StoryBoard:     1.initWithCoder   ;  2.awakeFromNib 

2、Xib:                  1.initWithCoder   ;  2.awakeFromNib 

3、纯代码:            1.init  ;  2.initWithFrame   

  说明

1、awakeFromNib和initWithCoder:差别
      awakeFromNib 从xib或者storyboard加载完毕就会调用
      initWithCoder: 只要对象是从文件解析来的,就会调用
      同时存在会先调用initWithCoder:
2、initWithCoder: & initWithFrame:
      initWithCoder:使用文件加载的对象调用(如从xib或storyBoard中创建)
      initWithFrame:使用代码加载的对象调用(使用纯代码创建)
      注意:所以为了同时兼顾从文件和从代码解析的对象初始化,要同时在initWithCoder: 和 initWithFrame: 中进行初始化
3、无论XIB还是代码创建都会调用loadView方法。self.view为nil时才会被调用。
      手工创建视图时,loadView被调用时self.view还为nil。一般在该方法中手工定制view。
      XIB创建视图时,loadView仍会被调用、loadView被调用时XIB定制的视图还没创建完成,若是再覆写该方法的话、会将XIB定制的视图覆盖掉。
      所以,纯手工定制视图时,一般在该方法中写;XIB定制视图时、不要覆写该方法。
4、无论XIB还是代码创建都会调用viewDidLoad方法。
      手工创建视图时,viewDidLoad被调用时self.view已经创建完成。可在在该方法中进一步定制视图。
      XIB创建视图时,viewDidLoad仍会被调用,viewDidLoad被调用时self.view已经创建完成。可在在该方法中进一步定制视图。
      所以,无论那种方式定制视图、都可以覆写该方法。
5、一般情况下调用 init方法或者调用initWithNibName方法实例化UIViewController;当控制器被initWithNibName:并加入到导航控制器的栈中时,它不会加载nib文件,直到nib文件被实际显示。因此控制器在nib文件中定义的内容,例如label,可能还没有实例化。此时label可能只是一个nil指针,需要额外使用代码中实现的属性来存储信息。可以在 viewWillAppear:方法中对nib实例化的对象属性进行设置
6、awakeFromNib此方法在使用IB的时候才会涉及到,当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。

 

 

以上内容,转发网络

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值