iphone - 为什么自动释放对于 iPhone 应用程序特别危险/昂贵?

标签 iphone objective-c performance autorelease

我正在寻找一个主要来源(或一个非常好的解释)来支持在为 iPhone 编写软件时使用 autorelease 是危险的或过于昂贵的说法。

许多开发者都提出了这种说法,我什至听说 Apple 不推荐它,但我无法找到任何具体的来源来支持它。

SO 引用:
autorelease-iphone
Why does this create a memory leak (iPhone)?

注意:我可以看出,从概念的角度来看,autorelease 比简单调用 release 稍微昂贵一些,但我不认为小的惩罚足以让 Apple 反对它。

什么是真实的故事?

最佳答案

(不能接受自己的回答?)

好吧,毕竟,我确实设法从 Apple Developer 找到了一个引用,添加为页面底部附近的旁注:

iPhone OS Note: Because on iPhone OS an application executes in a more memory-constrained environment, the use of autorelease pools is discouraged in methods or blocks of code (for example, loops) where an application creates many objects. Instead, you should explicitly release objects whenever possible.

不过,这仍然建议谨慎使用自动释放,而不是完全避免它。

(现在是我的评论)

听起来维护池有一定的开销。我读了this article这可能会导致我尽可能避免自动释放,因为我更喜欢保持一致。如果您有一些内存处于自动释放状态而其他内存完全由手动管理,则可能会更加困惑。

关于iphone - 为什么自动释放对于 iPhone 应用程序特别危险/昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/613583/

相关文章:

android - 单击已注册但未在 canvas android 中绘制

iphone - 仅在 iPhone 上重新启动后才更改语言

iphone - UITapGestureRecognizer 相互冲突

iphone - 无法让表格 View 部分/行填充正确的计数和数据。来自 plist 文件

ios - Navigation Bar 向上移动,同时 Navigation Controller 弹出动画

mysql - 从单表性能问题创建多对多

iphone - 如何在 iOS 钥匙串(keychain)中添加另一个密码?

ios - 从 iPhone 仅获取新的/修改的电话联系人

Objective-C:从类引用创建实例

c++ - 从午夜开始获取纳秒级的最低延迟