2013-02-23 156 views
0

我在开发的应用程序中遇到了一些问题,有时如果我在动画结束时终止它,它不会最终调用动画内部的释放方法API。Catch dealloc(发布)错误

如果我为了安全起见而在[obj release]结尾,那么如果代码能够正常工作并释放对象,它最终会引发内部错误。

所以,我的问题是,有没有办法忽略这些错误调用释放,只是继续下一行?

+0

Seamus是对的。顺便说一句,通过静态分析器运行你的代码(“产品”菜单上的“分析”),它会发现许多可能困扰非ARC代码的常规内存管理问题。 – Rob 2013-02-23 03:30:46

+0

发布一些代码,有一个安全的方式来结束动画。 – danh 2013-02-23 03:32:45

回答

3

没有办法安全地忽略错误。

了解对象保留和释放语义是编写无缺陷Objective-C代码最重要的部分之一。如果您启用自动引用计数(ARC),您将为自己节省很多这些麻烦,但事实是,如果不了解这些东西的工作原理,您就不能成为严肃的Objective-C编码器。

就特定的错误而言,我建议您提供一些块代码片段以及如何取消动画,以便我们可以指出如何正确平衡发布调用。

+0

我完全理解,我只是希望有一种方法可以避免不必去挖掘我正在使用的这个开源软件包(cocos2d),并找出为什么它在中断时不会释放它的对象。 – 2013-02-23 03:35:44

+0

那么,在调试cocos2d代码大约2个小时后,我能够发现问题。当我重置场景时,它将动作设置为暂停状态并保留对其的引用(如果尚未完成)。我添加了一个方法来检查这些并修复它们。 – 2013-02-23 06:34:24