2010-06-05 58 views
0

我使用的是NSOutlineView與定義的函數可可NSOutlineView錯誤 - [NSCFTimer copyWithZone:]:無法識別的選擇發送到實例

- (BOOL)outlineView:(NSOutlineView *)outlineView 
    isGroupItem:(id)item 

所以它給人的組行GUI的樣子。當我添加一個根項目,它工作正常。當我將一個項目添加到根的子數組並擴展它時,它工作正常。如果我雖然簽約的項目,記錄了以下錯誤:

[NSCFTimer copyWithZone:]: unrecognized selector sent to instance 

我也得到一個EXC_BAD_ACCESS錯誤,如果應用程序窗口切換到另一個應用程序停用。我用調試器試圖找到我可能在其中一個函數中出錯的位置,但堆棧跟蹤僅顯示我沒有創建的函數(RunCurrentEventLoopInMode,CFRunLoopRunSpecific,handleWindowNeedsDisplay等)。有沒有人知道我的錯誤在哪裏(s)可能是?

回答

4

聲音像一個物體過早死亡。當一個新的對象稍後用同一個指針分配,然後嘗試向舊對象發送一條消息時,你會得到「無法識別的選擇器發送給實例」異常(在所示的示例中,輪迴是一個NSTimer,並且該消息嘗試着發送先前的對象是copyWithZone:)。當對象只是垃圾內存時,您會遇到EXC_BAD_ACCESS崩潰。

通過在啓用殭屍工具的儀器下運行您的應用程序來進行調試。物體不會死亡,而會變成殭屍物體。當某些東西試圖向殭屍發送一條消息時,殭屍會發出呻吟聲(比喻地說),它將在樂器的時間線上作爲旗幟出現。您可以單擊該標誌中的按鈕來查看對象的歷史記錄,包括其所有保留和發佈。

相關問題