1

我是一名计算机编程专业的二年级学生,正在开发一个 Objective C 的程序。(如果重要的话,Xcode)。现在,我们正在制作动画并在屏幕上移动动画对象。现在,我正在处理一个让我发疯的错误。我的程序正在使用 ARC,自动引用计数,据说它应该有助于内存管理。但是,由于某种原因,我似乎无法使用

[super dealloc]; 

它总是给我一个错误,上面写着“ARC禁止发送'dealloc'的显式消息

为什么是这样?我如何解决它?它适用于我的其他程序,只是不是这个?

此外,发布似乎也不起作用。例如,下面的代码给了我 2 个错误:[fireBall release];

错误说“'release'不可用:在自动引用计数模式下不可用”,下一个错误说“ARC forbids explicit message send of 'release'”。为什么会发生这种情况,我该如何解决?此代码适用于我的其他程序。有人可以解释一下,或者至少提供一个可以解决我所有问题的链接吗?谢谢阅读

4

3 回答 3

3

您应该花一些时间来完整阅读Apple 的 ARC 指南

它将为您节省大量时间,而且绝对值得理解。

于 2012-11-01T16:44:41.163 回答
2

您可以定义自己的 dealloc 方法,只是不能调用 [super dealloc] (ARC 会自动调用它)。发布也是如此,您不需要调用它,因为 ARC 处理将其放置在您的代码中

于 2012-11-01T16:41:37.720 回答
0

简单,只需删除该行。ARC 负责所有的 release/autorelease/dealloc 调用。ARC 对对象的生命周期有 100%(几乎)的洞察力,并为您插入这些调用。

不过,您仍然可以覆盖 dealloc 方法来进行一些清理。

于 2012-11-01T16:40:03.570 回答