UIAnimator消息发送到解除分配的实例

时间:2011-02-24 04:41:35

标签: iphone

嘿伙计们,我疯了。

*** -[UIAnimator removeAnimationsForTarget:]: message sent to deallocated instance 0x5ba13d0

当我滚动我的tableview,当我切换我的过滤器(一个UISegmentedControl)时,它发生在不同的时刻。

帮助我,我和这些家伙发疯了:) 我该如何解决?

3 个答案:

答案 0 :(得分:3)

我刚刚解决了同样的问题。 我认为这与UIAnimation有关,但它与UITableViewCell有关。 我找到了一个很好的起点来看这篇文章。

http://marius.me.uk/blog/2011/mar/fixing-uianimator-removeanimationsfortarget-crash/

祝你好运,让我知道!

答案 1 :(得分:3)

我有相同的症状(由[UIAnimator removeAnimationsForTarget:]消息导致的崩溃被发送到解除分配的UITableViewCell,但事实证明这是由与上述解决方案中引用的原因不同的原因造成的。事实证明原因是我的UI正在被非UI线程更新。具体来说,我是从后台线程调用popViewController:animated:。当我通过回调将此调用移动到UI线程时,问题就消失了。

答案 2 :(得分:0)

@ er0 @notme 的答案都是正确的。

当我在storyBoard中创建两个不同的Cell UI并尝试在tableView:cellForRowAtIndexPath中使用它时,它在完全不同的按钮操作上给了我这个错误。该方法与UITableViewCell无关(AFAIK)。

首先我用 @ er0 的方式:在我遇到崩溃的方法上,在主线程中执行它。

performSelectorOnMainThread:withObject:waitUntilDone

它解决了崩溃。

然后我开始意识到我的tableView:cellForRowAtIndexPath代码需要重构。在某些特殊情况下,我使用dequeueReusableCellWithIdentifier两次indexPath。重构代码并将if-else置于dequeueReusableCellWithIdentifier未针对单个indexPath调用两次的方式。它解决了我的崩溃,我不再需要performSelectorOnMainThread"

我最终使用了 notme 的解决方案。