loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFrom

转载 2016年08月30日 13:39:49


loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFromNib的调用时间及用法

备注:依个人使用来说,这个方法在解档归档的时候才会有具体明确的作用(欢迎各位同行继续补充)

写入提取方法   

<span style="font-family:Lucida Grande, Lucida sans Unicode, Arial, Verdana, sans-serif;">// 1.归档路径 NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"stu.data"]; //2.归档模型对象 [NSKeyedArchiver archiveRootObject:stu toFile:path]; // 3.从文件中读取Student对象 YHStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path ];</span>

cocoa具备一种机制来将对象自身转换为某种格式并保存中磁盘上。

对象可以将它们的实例变量和其他数据编码为数据块,然后保存到磁盘中。以后将这些数据块都会到内存中,并且还能基于保存的数据创建新对象。这个过程称为编码和解码,或称为序列化和反序列化。

要编码的对象,必须实现NSCoding协议。

当对象需要保存自身时-encoderWithCoder:方法被调用

当对象需要加载自身时-initWithCoder:方法被调用

initWithCode:和其他init方法一样,中对对象执行操作之前,需要使用超类对它们进行初始化。为此,,可以采用两种方式,具体取决于父类,如果父类采用了NSCoding协议,则应该调用[superinitWithCoder:decoder];

否则,只需要调用[superinit]即可。


4>initWithNibName

一般情况下调用 init方法或者调用initWithNibName方法实例化UIViewController, 不管调用哪个方法最终都会调用initWithNibName方法。
 当控制器被initWithNibName:并加入到导航控制器的栈中时,它不会加载nib文件,直到nib文件被实际显示。因此控制器在nib文件中定 义的内容,例如label,可能还没有实例化。此时label可能只是一个nil指针,需要额外使用代码中实现的属性来存储信息。可以在 viewWillAppear:方法中对niv实例化的对象属性进行设置。 

注:有两种方法可以加载XIB中的视图,摘录两种的小别如下

initWithNibName方法:是延迟加载,这个View上的控件是 nil 的,只有到 需要显示时,才会不是 nil 

loadNibNamed方法:即时加载,用该方法加载的xib对象中的各个元素都已经存在。 

5>awakeFromNib

在使用XIB的时候才会涉及到此方法的使用,当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。


参考链接:



?url=T_EFD7HrZBqB_0JxeohoeXN9VFT4ZMh-0xQSLgAvY-JaowfvDCVwlDe_4Dc-V7m8YQE4GoULlcwddrdsYferj55dZjJL41128hYCqQEIria

viewDidLoad 和 loadView 的区别,并且viewDidLoad可能被调用两次(或者多次)

viewDidLoad 和 loadView 的区别,并且viewDidLoad可能被调用两次(或者多次)
  • w_x_p
  • w_x_p
  • 2016年09月10日 16:52
  • 1456

loadview和viewdidload

loadview和viewdidload iPhone开发必不可少的要用到这两个方法。 他们都可以用来在视图载入的时候,初始化一些内容。 但是他们有什么区别呢? viewDidLoad...
  • u010297362
  • u010297362
  • 2013年06月10日 17:44
  • 2503

IOS viewDidLoad方法被执行两次(viewDidLoad和loadView方法详解)

为了搞清楚viewDidLoad、loadView等方法的用途和调用顺序,写了一个小demo,不料viewDidLoad方法被执行了两次,模拟器也一直是黑屏。查看了这两个方法的官方解释后找到了错误原因...
  • abc649395594
  • abc649395594
  • 2015年05月03日 14:17
  • 2490

loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFromNib的用法

1,无论XIB还是代码创建都会调用loadView方法。self.view为nil时才会被调用。      手工创建视图时,loadView被调用时self.view还为nil。一般在该方法中手工定...
  • lvmaker
  • lvmaker
  • 2014年05月27日 10:15
  • 8470

loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFromNib的调用时间及用法

1> loadView 无论XIB还是代码创建都会调用loadView方法。self.view为nil时才会被调用。      手工创建视图时,loadView被调用时self.view还为nil。一...
  • jiisd
  • jiisd
  • 2015年07月04日 23:14
  • 1506

loadView viewDidLoad initWithNibName awakeFromNib initWithCoder

每个ios开发者对loadView和viewDidLoad肯定都很熟悉,虽然这两个函数使用上真的是非常简单,但是和类似的initWithNibName/awakeFromNib/initWithCod...
  • FF15_
  • FF15_
  • 2011年12月16日 10:14
  • 290

loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的用法

loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的用法每个ios开发者对loadView和viewDidLoad肯定都很熟...
  • diyagoanyhacker
  • diyagoanyhacker
  • 2011年04月07日 09:13
  • 6150

iphone+ios+loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder/initWithFrame

一篇e文得文章写得挺清楚 http://www.cimgf.com/2008/03/26/cocoa-tutorial-awakefromnib-vs-applicationdidfinishl...
  • linzhiji
  • linzhiji
  • 2011年09月08日 19:37
  • 3424

[转]loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的用法

转载自 http://www.devdiv.com/home.php?mod=space&uid=18486&do=blog&id=6517 每个ios开发者对loadView和viewDi...
  • getengwork
  • getengwork
  • 2011年11月24日 17:44
  • 140

[转]loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的用法

作者:禚来强 邮箱:zhuolaiqiang@gmail.com 转帖请保留    每个ios开发者对loadView和viewDidLoad肯定都很熟悉,虽然这两个函数使用上真的是非常简单,但是...
  • longlongago2000
  • longlongago2000
  • 2012年05月22日 09:46
  • 1858
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFrom
举报原因:
原因补充:

(最多只允许输入30个字)