0

执行以下操作是否安全?

// in AppController.h
@interface AppController : NSObject
{
    IBOutlet NSTextField *label;
}
@end

// in AppController.m
- (void)awakeFromNib
{
    [label setIntValue:5];
}

还是有可能在发送到实例label时可能尚未完全初始化?awakeFromNibAppController

4

2 回答 2

0

我不确定它是否安全。
但是您应该viewDidLoad:在加载 nib 文件后用于任何视图设置。

于 2012-06-07T13:32:23.967 回答
0

文档说:

重要
因为不能保证从档案中实例化对象的顺序,所以您的初始化方法不应向层次结构中的其他对象发送消息。可以从 awakeFromNib 中安全地向其他对象发送消息——此时可以确保所有对象都未归档和初始化(当然,不一定要唤醒)。

事实上, awakeFromNib 是在创建对象并连接出口和操作完成后发送到所有对象的 nib 创建和File's Owner 。

于 2012-06-07T13:40:48.010 回答