0

awakeFromNibこのコードは、再帰的に呼び出されるため、アプリをクラッシュさせます。

- (void)awakeFromNib
{
    [super awakeFromNib];
        ...
        [[self window] setFrameTopLeftPoint:NSMakePoint(frame.origin.x, frame.origin.y)];
}

setFrameTopLeftPoint は再度呼び出していawakeFromNibますか? NSWindow が XIB ファイルによってロードされるときに、awakeFromNib が呼び出されるのは 1 回だけだと思いました。

からウィンドウの位置とサイズを更新するにはどうすればよいawakeFromNibですか?

ありがとう

4

1 に答える 1

0

awakeFromNib で無限再帰が発生する理由がわかりません。コードを模倣したテスト プロジェクトを作成しましたが、-awakeFromNib は 1 回だけ呼び出されました。ウィンドウコントローラーの初期化方法に関係があると思われます。

とはいえ、ウィンドウの位置を更新するのは、おそらく -windowDidLoad で行う方がよいでしょう。ドキュメントの「NSWindowControllerのサブクラス化」セクションから、次のように述べています。

windowDidLoad: ウィンドウ nib ファイルがロードされた後にタスクを実行するようにオーバーライドします。

于 2012-06-07T15:35:32.720 に答える