awakeFromNib viewDidLoad initWithCoder loadView

 

awakeFromNib 
当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。也就是说通过nib文件创建view对象是执行awakeFromNib 

 


viewDidLoad 
当view对象被加载到内存是就会执行viewDidLoad,所以不管通过nib文件还是代码的方式创建对象都会执行viewDidLoad 

/////////////////////////////////////////////////

awakeFromNib是一个只有在GUI对象被成功加载才调用的方法,而init方法是在GUI被创建前就已经调用了。

当程序对Nib文件进行反序列化然后初始化时([[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil]; ),会调用一次awakeFromNib。 


但是如果你使用initWithNibName调入Nib时,awakeFromNib是不会被调用的。

所以用以下代码运行程序时不执行awakeFromNib

  1. TestController *test = [[TestController alloc] initWithNibName:@"Test" bundle:nil];  
  2. [self.view addSubview:test.view]

而viewDidLoad不管在什么情况下都会执行 

 

//

initWithCoder 不需主动调用, 在xib建立ui对象的过程中被调用.

nitWithCoder 在我看来是从文件里加载对象,需要指定文件的编码格式,比如UTF8,unicode等等。

 

 

 

loadView 此方法在控制器的view为nil的时候被调用。 此方法用于以编程的方式创建view的时候用到。 如:

  1.  
  2. -  (  void  ) loadView  {
  3.     UIView *view =  [  [ UIView alloc ] initWithFrame: [ UIScreen
  4. mainScreen ] .applicationFrame ] ;
  5.      [ view setBackgroundColor:_color ] ;
  6.     self.view = view;
  7.      [ view release ] ;
  8. }
  9.  

你 在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 如果设备内存不足的时候, view 控制器会收到didReceiveMemoryWarning的消息。 默认的实现是检查当前控制器的view是否在使用。 如果它的view不在当前正在使用的view hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release, loadView方法将被再次调用来创建一个新的view。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值