当加载nib文件时,存储在nib文件中的任何对象都会被重新创建。这意味着会在后台执行alloc和init方法。所以,当应用程序启动时,会分配并初始化一个AppController实例。在执行init方法期间,所有IBOutlet实例变量都为nil。只有创建了nib文件中的所有对象,所有连接才算完成。
一旦建立了所有连接,会向创建的每个对象发送消息awakeFromNib.一个非常常见的错误是试图在init方法中使用IBoutlet执行一些操作。由于所有实例变量都为nil,发送给他们的所有消息不执行任何操作,所以在init中的任何尝试都会发生无提示失败(这是Cocoa导致效率降低和占用大量调试时间的一个方面)。如果你想知道为什么这些操作不起作用,可以使用NSLog输出实例变量的值,并查看它们是否都为nil.对于创建的对象和发送的awakeFromNib消息,都不存在预定义的顺序。
时间: 2024-09-30 07:06:14