【问题标题】:Does it make any sense to release ivars in appdelegate's dealloc?在 appdelegate 的 dealloc 中释放 ivars 是否有意义?
【发布时间】:2011-03-28 06:37:11
【问题描述】:

我知道在它的 dealloc 方法中释放 appdelegate 的 ivars 可能是一个好习惯,但实际上,它有什么意义吗?

据我了解,iPhone 应用程序的 appdelegate 将在应用程序运行时驻留在内存中,并且在关闭时无论如何都会释放所有内存。

谢谢

【问题讨论】:

    标签: iphone objective-c delegates memory-management


    【解决方案1】:

    良好的内存管理应该是一种习惯。你越多地考虑它适用的时间和地点,你犯错误的可能性就越大。单凭这点就足够了。

    换个问题 - 添加这些版本会失去什么?添加它们真的很费劲吗?

    还有一些问题:

    • 如果架构稍有变化并且应用程序委托提前发布会怎样?
    • 如果其中一个正在释放的对象在其 dealloc 中进行了额外的清理(例如保存其状态)会怎样(暂时忽略这是否是个好主意)。
    • 构建和分析时会产生噪音吗?

    就我个人而言,我会发布所有应用委托。你可以争辩说这不值得——但我希望我已经给了你一些理由让你不考虑。

    [更新]

    我已经在博客上写过一种可能相关的替代内存管理技术 - 使用(通过 Objective-C++)smart pointers

    【讨论】:

    • 嗨,谢谢你的回答),我不想说发布它们很难或者我不想这样做)我只是在这里问它来了解人们的想法它。你给了很好的理由))我想问,不能提前发布appdelegate吗?没有它,应用还能生存吗?
    • 应用委托没有什么神奇之处。您当然可以发布它,并且该应用程序将继续存在。当然,它不会做任何由应用程序委托处理的事情。 :) 但我假设如果你发布它,你打算让它停止运行。
    猜你喜欢
    • 2011-01-22
    • 2011-03-21
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多