2013-01-19 20 views
0

從NSView啓動IBAction時收到此錯誤消息。[XXXX performSelector:withObject:]:發送到釋放實例的消息

XXXX是AccountTableCellViewController我確實把它與一個抽象的名字,以防它可以幫助其他prople。

這是部件的結構:

我有一個應用程序,其中我負荷這樣的觀點: enter image description here

使用此的NSView作爲細胞 enter image description here

的TableView中已綁定像這個:

@property (nonatomic,retain) IBOutlet NSTableView *tableView; 

我di張開內容如下(我有沒有連接任何地方的控制器有些疑惑)

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
{ 
    Account *account = (Account *)[self.dataSource objectAtIndex:row]; 

    AccountTableCellViewController *controller = [[AccountTableCellViewController alloc] initWithNibName:@"AccountTableCellViewController" bundle:nil ]; 
    controller.account = account; 
    return [controller view] ; 
} 

任何想法?

+0

你使用ARC嗎?也可以首先進行靜態分析,發現bug –

+0

您的'Application'實例中有一個視圖?這是不可能的;你必須使用應用程序委託...也許你在'佔位符'部分選擇了錯誤的行? – trojanfoe

+0

@ xlc0212是的,我正在使用ARC。分析沒有給我任何信息。 –

回答

1

這是一個預ARC相當於你的代碼

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
{ 
    Account *account = (Account *)[self.dataSource objectAtIndex:row]; 

    AccountTableCellViewController *controller = [[AccountTableCellViewController alloc] initWithNibName:@"AccountTableCellViewController" bundle:nil ]; 
    controller.account = account; 
    NSView *result = [[controller view] retain]; 
    [controller release]; /// !!! 
    return [result autorelease]; 
} 

你的控制器的時刻tableView:viewForTableColumn:回報已經釋放。你在評論中說你已經試圖讓控制器保持陣列狀態,但它沒有幫助。請使用代碼的相應部分更新您的問題,因爲這裏有些問題。

+0

謝謝@hoha,你的回答幫了我很多。 –

相關問題