执行以下操作是否安全?
// in AppController.h
@interface AppController : NSObject
{
IBOutlet NSTextField *label;
}
@end
// in AppController.m
- (void)awakeFromNib
{
[label setIntValue:5];
}
或者,当label
实例发送awakeFromNib
时,AppController
是否可能尚未完全初始化?
答案 0 :(得分:0)
我不确定它是否安全。
但是,在加载nib文件后,您应该使用viewDidLoad:
进行任何视图设置。
答案 1 :(得分:0)
重要
由于无法保证从归档实例化对象的顺序,因此初始化方法不应将消息发送到层次结构中的其他对象。 可以从awakeFromNib中安全地发送其他对象的消息 - 这时确保所有对象都已归档并初始化(当然,当然不一定被唤醒)。< / p>
事实上,在创建对象并连接插座和操作完成后,awakeFromNib将发送到nib创建的所有对象和文件的所有者。