iPhone,无垃圾收集:MonoTouch 怎么样?

Posted

技术标签:

【中文标题】iPhone,无垃圾收集:MonoTouch 怎么样?【英文标题】:iPhone, No Garbage Collection: What About MonoTouch? 【发布时间】:2010-05-12 11:28:46 【问题描述】:

众所周知Apple does not provide automatic garbage collection on the iPhone to prolong battery life。然而,据报道可以在 iPhone 上完美运行的 MonoTouch 应用程序(许多通过 AppStore 销售,因此得到了 Apple 的批准)确实具有自动垃圾收集功能。

    这是自动垃圾回收,还是 MonoTouch 只是为您管理所有 retain/release 的东西? 如果是自动垃圾回收,那岂不是很耗电?

编辑:如果您对#1 的回答是“是”,而您对#2 的回答是“否”,为什么?

历史编辑: 应该注意的是,Apple 决定为 ios 5.0 采用不同的路线并实现 ARC(还允许针对相同 SDK 编译的代码也可以在 iOS 4.x 上运行)。

【问题讨论】:

【参考方案1】:

是的,它有真正的垃圾收集。 MonoTouch 基于 Mono。其中使用Boehm-Demers-Wiser Conservative Garbage Collector(压缩垃圾收集器正在开发中)。它能够自动收集未引用的对象。在电池寿命方面,使用 C# 和 .NET 不如使用 Objective-C/C++/C 最佳,因为完成相同的工作需要更多的 CPU 时钟,但如果您的应用程序不是 CPU 密集型的,这可能是微不足道。我认为您不会对电池寿命产生显着影响。

【讨论】:

很好的答案:事实上,我正在考虑 GC 对 iPhone 4.0 协议的影响。从某种意义上说,使用 GC 可能被视为“作弊”,这会导致电池寿命缩短等问题。但我在查看大量 [thing release] 声明并分心时也在考虑 MonoTouch :) 虽然我们在这里,但请查看 MonoTouch 关于新协议是否会启动它们的推测:mono-project.com/newstouch/archive/2010/Apr-19.html 只是为了记录,Apple 已经在他们的 javascript 引擎中实现了垃圾收集器。 我经常想知道为什么不能只使用你在Objective-C中提到的GC...

以上是关于iPhone,无垃圾收集:MonoTouch 怎么样?的主要内容,如果未能解决你的问题,请参考以下文章

使用 AudioQueue 和 Monotouch 静态声音录制

如何使用 MonoTouch 在 iPhone 上播放视频?

这是 MonoTouch GC 中的错误吗?

自动释放池与垃圾收集有啥联系?

Monotouch iPhone 项目未出现在 MonoDevelop 中

Monotouch:使用 iPhone 模拟器播放背景音频