当 UIView dealloc 仍然留下参考时删除所有当前动画

Posted

技术标签:

【中文标题】当 UIView dealloc 仍然留下参考时删除所有当前动画【英文标题】:Removing all current animations when UIView dealloc still leaving reference 【发布时间】:2011-04-08 17:39:27 【问题描述】:

我有一个 UIView 子类,它在 ios 项目中经常被分配和释放。我添加了[self.layer removeAllAnimations]; 以尝试在销毁对象之前删除所有动画。偶尔,我还是会收到-[ClassName animationDidStop:finished:]: message sent to deallocated instance。现在,不应该删除动画会杀死该委托并阻止它尝试调用 animationDidStop 吗?

【问题讨论】:

【参考方案1】:

请查看"Will sending -removeAllAnimations to a layer also propagate to all it's sublayers?",这可能是您问题的答案。

【讨论】:

我尝试这样做并将每一层的委托设置为 nil,但我仍然收到相同的错误。我还尝试循环和删除子视图,但没有成功。 这是否也发生在设备上? 我一直在设备上进行测试。确切地说是 iPad(第 1 代)。 for (CALayer *layer in [[imageLayer.sublayers copy] autorelease]) [layer removeAllAnimations]; [层 removeFromSuperlayer];层=无;

以上是关于当 UIView dealloc 仍然留下参考时删除所有当前动画的主要内容,如果未能解决你的问题,请参考以下文章

Iphone:定制的 UIView 是不是需要 dealloc

UIPopoverController:在popover仍然可见时达到了dealloc

某个 UIView的dealloc方法不执行

添加了 CAGradientLayer,在我的 UIView dealloc 中得到了这个:[CALayer release]: message sent to deallocated instanc

CALayer setCornerRadius 仍然在下面留下白色角落

弹出错误 - [UIPopoverController dealloc] 在弹出仍然可见时达到 [重复]