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 上播放视频?