【问题标题】:Are the objective C selectors dealloc and release in still in use as of iOS 6?从 iOS 6 开始,目标 C 选择器 dealloc 和 release 是否仍在使用?
【发布时间】:2012-10-30 05:43:18
【问题描述】:

我是 iOS 开发新手。我还需要在 iOS 6 中释放我在 dealloc 中的属性吗?

如果没有,我的保留属性如何释放?是自动完成的吗?

在这方面需要一些指导。对不起,如果这是一个愚蠢的问题..

例如,当我这样做时:

- (void)dealloc
{
    [super dealloc];
}
@end

我收到类似于以下内容的消息:

ARC forbids explicit message send of 'dealloc'

【问题讨论】:

  • 你的问题其实和iOS 6没有关系,是你有没有开启ARC的问题。根据该消息,您确实启用了 ARC(这是目前的默认设置)。有关详细信息,请参阅 Oscar 提供的链接。

标签: ios ios6 automatic-ref-counting llvm dealloc


【解决方案1】:

答案是肯定的,引用计数内存管理仍在使用中,retainreleaseautoreleasedealloc 方法仍在使用中。

您需要问的问题是:“我需要使用它们吗?”

该答案取决于您是否启用了 ARC。 ARC 代表 Automatic Reference Counting,自 iOS 5 起在新的 iOS 项目中默认启用。ARC 是 LLVM 编译器的一个功能,它会根据众所周知的 cococa 编程约定自动将所需的保留/释放/自动释放方法调用添加到您的代码中.

编译器告诉您“ARC 禁止显式消息..等”的原因是因为它正在为您管理这些调用 - 这是一个全有或全无的交易。 ARC 管理所有内存管理,或者一个都不管理。

可以在每个项目或每个文件的基础上启用或禁用 ARC。启用 ARC 的代码与未启用 ARC 的代码兼容。

如果您想了解 ARC 为您做了什么,我建议您阅读 Transitioning to ARC Release Notes

然后我会观看来自developer.apple.com/videos 的所有自动引用计数视频。

最后,如果你准备好了,请阅读官方LLVM documentation on ARC

【讨论】:

    【解决方案2】:

    如果您使用 ARC,编译器会为您完成所有这些工作。

    供您参考: http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

    【讨论】:

      猜你喜欢
      • 2010-10-08
      • 1970-01-01
      • 2011-03-02
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 2010-09-22
      • 2013-05-02
      相关资源
      最近更新 更多