2011-09-13 8 views
1

にコードがあり、私のMyWindowControllerを にリリースすると、以下のコードがクラッシュします。私のモーダルダイアログがクラッシュする(ココア)

Mac OS 10.6.8でテストします。 私はXcode 3.1.3を使用しています。

どうしたのですか?

NSTableViewメソッドでクラッシュするため、MyWindowControllerを解放する前にウィンドウが廃棄されていないようです。

マイボタンハンドラは、私のMyWindowControllerで[NSApp stopModalWithCode:0];

MyDialog() 
{ 
    MyWindowController* controller = [[MyWindowController alloc] init]; 
    [controller showWindow:controller]; 
    NSWindow* window = [controller window]; 
    [NSApp runModalForWindow:window]; 
    [window close]; 
} 

を呼び出します。

- (void)windowWillClose:(NSNotification*)notification 
{ 
    [self autorelease]; 
} 

答えて

0

あなたはwindowWillCloseの '自己' リリースされている - 間違っているようです。

確かにそのようなものはdeallocで行う必要がありますか?

-(void)dealloc 
{ 
    [super dealloc]; 
} 

また、最初にalloc'dしたときに、より良いオートリリースコントローラかもしれませんか?

+0

私はこれにコードを変更し、今では動作します。私は比較的新しいCocoaプログラミングです。なぜ私のテーブルビューアウトレットが自動的に切断されないのかわかりません。ウィンドウコントローラを解放する前に、ウィンドウコントローラからテーブルビューのデータソースを手動で切断する必要がありました。 ' - (void)windowWillClose:(NSNotification *)通知 { \t [tableView setTarget:nil]; \t [tableView setDelegate:nil]; \t [tableView setDataSource:nil]; \t [self autorelease]; } ' –

関連する問題