awakeFromNib何时被调用?
在viewController被分配和初始化后, awakeFromNib
被调用了吗? 视图控制器的awakeFromNib
被调用的确切点是什么? 在我的debugging会话中,我看到在执行[self.window makeKeyAndVisible]
之前,不会调用[self.window makeKeyAndVisible]
。
awakeFromNib
在视图及其子视图被分配和初始化之后被调用。 保证视图将具有设置的所有出口实例variables。
编辑:事件的详细叙述:
在实例化过程中,归档中的每个对象都被解除存档,然后使用适合其types的方法进行初始化。 Cocoa视图(以及可以使用关联的Interface Builder调色板定制的自定义视图)使用它们的initWithCoder:方法进行初始化。 自定义视图使用它们的initWithFrame:方法进行初始化。 已经在nib中实例化的自定义类使用它们的init方法进行初始化。
一旦所有的对象都已经被实例化并且从档案库中被初始化,那么笔尖加载代码将尝试重新build立每个对象的出口和相应的目标对象之间的连接。 如果您的自定义对象具有插口,则NSNib对象会尝试重新创build在Interface Builder中创build的任何连接。 首先尝试使用对象自己的方法build立连接。 对于每个需要连接的出口,NSNib对象在对象中查找forms为setOutletName:的方法。 如果该方法存在,NSNib对象调用它,传递目标对象作为参数。 如果你没有用这个确切的名字定义一个setter方法,那么NSNib对象将search一个带有相应sockets名称的实例variables(typesIBOutlet id)并直接设置它的值。 如果找不到具有正确名称的实例variables,则不会发生该连接的初始化。 最后,在所有对象完全初始化之后,每个对象都会 收到一个awakeFromNib消息。
资源
编辑2 :这不适用于从故事板加载的视图控制器。
编码器需要加载一个尚未初始化的对象。
Exp:当代码调用awakeFromNib
时, UITableViewCell
控件将被初始化,不需要cellforrow
。