*** -[UIAnimator removeAnimationsForTarget:]: message sent to deallocated instance 0x5ba13d0
当我滚动我的tableview,当我切换我的过滤器(一个UISegmentedControl)时,它发生在不同的时刻。
帮助我,我和这些家伙发疯了:) 我该如何解决?
答案 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 的解决方案。