0

此代码使我的应用程序崩溃,因为awakeFromNib它被递归调用:

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

setFrameTopLeftPoint 是否再次调用awakeFromNib?我认为 awakeFromNib 只调用一次,当 NSWindow 由 XIB 文件加载时。

如何更新窗口位置和大小awakeFromNib

谢谢

4

1 回答 1

0

我不知道你为什么在 awakeFromNib 中得到无限递归。我创建了一个模仿您的代码的测试项目,并且 -awakeFromNib 只被调用了一次。我怀疑这与您初始化窗口控制器的方式有关。

也就是说,在 -windowDidLoad 中更新窗口位置可能会更好。从文档的“子类化 NSWindowController”部分,它说:

windowDidLoad:在加载窗口 nib 文件后重写以执行任务。

于 2012-06-07T15:35:32.720 回答