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

ドキュメントには次のように記載されています。

重要
オブジェクトがアーカイブからインスタンス化される順序は保証されていないため、初期化メソッドは階層内の他のオブジェクトにメッセージを送信しないでください。他のオブジェクトへのメッセージは、 awakeFromNib 内から安全に送信できます。その時点までに、すべてのオブジェクトがアーカイブ解除され、初期化されていることが保証されます(もちろん、必ずしも目覚めているわけではありません)。

実際には、awakeFromNib は、オブジェクトの作成とアウトレットとアクションの接続が完了した後、nib が作成したすべてのオブジェクトとFile's Owner に送信されます。

于 2012-06-07T13:40:48.010 に答える
0

安全かどうかはわかりません。
ただしviewDidLoad:、nib ファイルをロードした後は、どのビュー設定にも使用する必要があります。

于 2012-06-07T13:32:23.967 に答える