2012-04-19 63 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