执行以下操作是否安全?
// in AppController.h
@interface AppController : NSObject
{
IBOutlet NSTextField *label;
}
@end
// in AppController.m
- (void)awakeFromNib
{
[label setIntValue:5];
}
还是有可能在发送到实例label
时可能尚未完全初始化?awakeFromNib
AppController
我不确定它是否安全。
但是您应该viewDidLoad:
在加载 nib 文件后用于任何视图设置。
文档说:
重要
因为不能保证从档案中实例化对象的顺序,所以您的初始化方法不应向层次结构中的其他对象发送消息。可以从 awakeFromNib 中安全地向其他对象发送消息——此时可以确保所有对象都未归档和初始化(当然,不一定要唤醒)。
事实上, awakeFromNib 是在创建对象并连接出口和操作完成后发送到所有对象的 nib 创建和File's Owner 。