【问题标题】:Dealloc method disappeared from XCode 4.1 UIViewController templateDealloc 方法从 XCode 4.1 UIViewController 模板中消失了
【发布时间】:2011-08-15 15:38:23
【问题描述】:

我在开始开发 iOS 应用程序时一直使用 XCode 3.2.4,但现在我转向使用 iOS 4.3 SDK 的 XCode 4.1。我注意到,当我像在 XCode 3 中一样从 XCode 模板创建 UIViewController 类时,现在不会自动添加 dealloc 方法。 通过 Internet 搜索,我发现如果我使用 ARC(自动引用计数)创建项目,可能会发生这种情况,但据我所知,此功能仅在 XCode 4.2 中实现。

我应该手动添加 dealloc 方法吗?

【问题讨论】:

    标签: ios ios4 uiviewcontroller dealloc xcode4.1


    【解决方案1】:

    你可以继续添加dealloc。如果确实启用了 ARC,您会收到编译器的抱怨。

    即使在使用 ARC 时,如果您需要做一些除了释放对象之外的事情(例如,取消注册观察者),有时仍然需要使用 dealloc。

    【讨论】:

    • 当我添加 dealloc 方法时,编译器没有抱怨。但我想知道,为什么自动 dealloc 方法消失了。
    • 那么这听起来像是 Xcode 中的一个错误。也许您想向 Apple 提交报告?
    【解决方案2】:

    当不使用 ARC 时,是的...像往常一样使用 dealloc 方法。

    如果启用了 ARC,则在显式使用 dealloc 时应该会收到警告。 还要检查您的项目的构建设置,以获得额外的安全性。您可以在 Xcode 4.1 中使用使用 Xcode 4.2 创建的项目。

    在这种情况下,ARC 设置将位于底部,而不是通常的位置,因为它不应该被 Xcode 4.1 识别。

    【讨论】:

    • 您将收到有关release 的警告。 dealloc 在某些情况下仍然允许使用。
    • 在 dealloc 中,您通常需要调用 [ super dealloc ]。这也会发出错误。
    • 事实上,我查看了我的项目的构建设置,并没有关于 XCode 版本的信息。但是,我在问题中提到的情况是在我从头开始在 XCode 4.1 中创建项目时出现的。
    • @macmade,在使用 ARC 时,您不需要(实际上不应该)在您的 -(void)dealloc 方法中添加 [super dealloc]
    • 阅读“使用 ARC 发行说明编程”中的“ARC 实施新规则”部分了解更多详细信息。
    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2014-11-15
    相关资源
    最近更新 更多