此文章是vip文章,如何查看?  

1,点击链接获取密钥 http://nicethemes.cn/product/view29882.html

2,在下方输入文章查看密钥即可立即查看当前vip文章


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。

 

 

 

本文链接http://element-ui.cn/news/show-475427.aspx