Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何从“awakeFromNib”更新窗口位置和大小?_Objective C_Cocoa - Fatal编程技术网

Objective c 如何从“awakeFromNib”更新窗口位置和大小?

Objective c 如何从“awakeFromNib”更新窗口位置和大小?,objective-c,cocoa,Objective C,Cocoa,此代码使我的应用程序崩溃,因为awakeFromNib被递归调用: - (void)awakeFromNib { [super awakeFromNib]; ... [[self window] setFrameTopLeftPoint:NSMakePoint(frame.origin.x, frame.origin.y)]; } setFrameTopLeftPoint是否再次调用awakeFromNib?我认为当NSWindow被XIB文件加载时,a

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

- (void)awakeFromNib
{
    [super awakeFromNib];
        ...
        [[self window] setFrameTopLeftPoint:NSMakePoint(frame.origin.x, frame.origin.y)];
}
setFrameTopLeftPoint是否再次调用
awakeFromNib
?我认为当NSWindow被XIB文件加载时,awakeFromNib只被调用一次

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


谢谢

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

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

windowDidLoad:重写以在创建窗口nib文件后执行任务 上膛了


您在哪个类中声明此awakeFromNib?@Denis在NSWindowController中,它是窗口的委托