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

ここには2つの問題があります。まず、イニシャライザーにself次の割り当てがありません。

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

次に、アサーションが失敗している可能性のある理由は、nibファイル内のファイルの所有者windowのアウトレットをウィンドウオブジェクトに接続していないことです。これは、ウィンドウコントローラがウィンドウプロパティが指しているオブジェクトを認識していないことを意味します。

Interface Builderでアウトレットを設定する方法を理解していない場合は、多くのことを学ぶ必要があります。アウトレットとアクションがどのように機能するかを理解することは、でプログラミングできるようにするための基本であるため、他のことを行う前に簡単なチュートリアルを行う必要があります。ココア。

于 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 に答える