0

NSWindowController有这个代码:

- (id)init {
    [self initWithWindowNibName:@"MyWindow"];       
    [self loadWindow];
    return self;
}

- (void)windowDidLoad
{
    [super windowDidLoad];

    NSWindow *window = [self window];
    NSAssert(window != nil, @"Can’t get window!");

    // do some stuff    
}

NSAssert失败。

为什么?

我怎样才能得到窗户?

4

2 回答 2

3

这里有两个问题。首先,您的初始化程序缺少分配给self

- (id)init 
{
    self = [super initWithWindowNibName:@"MyWindow"];
    if(self)
    {
        [self loadWindow];
    }
    return self;
}

其次,您的断言失败的可能原因是您没有将 nib 文件中File's Ownerwindow的出口连接到窗口对象。这意味着您的窗口控制器不知道窗口属性指向的对象。

如果您不了解如何在 Interface Builder 中设置 outlet,那么您需要学习很多东西,并且您应该在做其他任何事情之前先做一个简单的教程,因为了解 outlet 和操作的工作原理对于能够使用可可。

于 2011-09-01T00:02:01.490 回答
-2

不应该有一个

self = [super init];

在你的

- (id)init {
[self initWithWindowNibName:@"MyWindow"];       
[self loadWindow];
return self;

}

于 2011-08-31T22:47:10.477 回答