2012-04-19 69 views
0

我在xcode 4.2中啓用了nszombie。 (從產品 - > editScheme)瞭解NSZombie消息

我有這樣的信息:

-[buttons respondsToSelector:]: message sent to deallocated instance 0x48ae50 

我有按鈕類,但我沒有看到這個消息有什麼確切的問題。

我可以從NSZombie獲得更多嗎?

回答

0

這個特定的消息意味着buttons實例(在0x48ae50)已被釋放(又名:release d)。因此,通過嘗試將respondsToSelector:消息發送到nothing(記住該實例已被解除分配),它會引發錯誤。

嘗試設置斷點不遠的地方它被觸發的地方,看看爲什麼...(現在,您buttons對象將最喜歡有0x0地址)

在大多數(如果不是全部)的情況下,這與一些錯誤的內存管理有關;被釋放的對象太快,當它有不保留,等... ;-)

+0

我知道它沒有理由發佈的東西,但是這個數字0x48ae50,對任何人都沒有任何意義。 way xcode沒有任何工具可以讓我直接指向特定的對象而沒有一團糟。我是否要求一些不是基本的東西? – user1280535 2012-04-19 08:52:54

+0

@ user1280535好吧,如果你碰巧有一個以上的'buttons'實例,而且你真的不知道哪一個模糊0x48ae50地址,那我就和你在一起;我不知道自己的答案,如果有人知道......我會很開心:-) – 2012-04-19 08:54:18

+0

謝謝。即使有了儀器,經過1年的發展,我不能指望具體分配的對象來解決問題。我真的正在尋找一種新的方式來處理它。 – user1280535 2012-04-19 09:44:36

2

的問題是,類型的對象按鈕被釋放,然後它的respondsToSelector:方法被調用,即對象位於地址0x48ae50處。

如果你沒有NSZombies運行,你的應用程序會崩潰。

+0

它實際上與殭屍崩潰,恰恰是我得到那個消息的時刻:) – user1280535 2012-04-19 08:54:31

+0

你有很多按鈕? – fbernardo 2012-04-19 08:58:16

+0

注意他們,並注意他們的地址,當你看到那條消息時,你知道那個正在被釋放的消息,然後找出原因! – fbernardo 2012-04-19 08:58:56