awakeFromNib什么时候被调用?

Boo*_*oon 29 ios awakefromnib

是否awakeFromNib得到所谓的viewController分配和初始化后,对不对?awakeFromNib调用视图控制器的精确点是什么?从我的调试会话中,我看到awakeFromNibrootViewController在[self.window makeKeyAndVisible]执行之前不会被调用.

wht*_*lnv 44

awakeFromNib在视图及其子视图分配和初始化后调用.保证视图将设置其所有插座实例变量.

编辑:详细的事件重述:

在实例化过程中,归档中的每个对象都是未归档的,然后使用适合其类型的方法进行初始化.可以使用initWithCoder:方法初始化Cocoa视图(以及可以使用关联的Interface Builder调色板自定义的自定义视图).使用initWithFrame:方法初始化自定义视图.已在nib中实例化的自定义类使用其init方法进行初始化.

一旦所有对象都已从存档中实例化并初始化,nib加载代码将尝试重新建立每个对象的出口与相应目标对象之间的连接.如果您的自定义对象具有出口,则NSNib对象会尝试重新建立您在Interface Builder中创建的任何连接.首先尝试使用对象自己的方法建立连接.对于需要连接的每个插座,NSNib对象在对象中查找形式为setOutletName:的方法.如果该方法存在,则NSNib对象将其调用,并将目标对象作为参数传递.如果未使用该确切名称定义setter方法,则NSNib对象将在对象中搜索具有相应插座名称的实例变量(类型为IBOutlet id),并尝试直接设置其值.如果找不到具有正确名称的实例变量,则不会发生该连接的初始化.最后,在完全初始化所有对象之后,每个对象都会 收到一条awakeFromNib消息.

资源

编辑2:这不适用于从故事板加载的视图控制器.

  • 这仅适用于笔尖.从故事板加载ViewControllers时会调用`awakeFromNib`,但***之前***视图和子视图已初始化 - 保证视图和出口将被初始化,这基本上是在处理实际笔尖时使该方法有用的原因或xib文件,*不*适用.但实际上,`awakeFromNib`似乎是初始化过程中最早的一点,当从故事板加载访问VC的`.view`属性会强制它加载时,所以如果你仍然可以以相同的方式使用它用`[self view]`开始吧. (3认同)