iPhone,没有垃圾回收:MonoTouch怎么办?

8
众所周知,苹果不提供自动垃圾收集功能以延长iPhone的电池寿命。然而,据报道 MonoTouch 应用在 iPhone 上运行完美(并且许多应用都通过 AppStore 销售,因此已经获得了苹果的认可),确实拥有自动垃圾收集功能。
1. 这是自动垃圾收集,还是 MonoTouch 只是为您管理所有的 retain/release 事项?
2. 如果这是自动垃圾收集,那么这不会对电池造成负担吗?
编辑:如果您对问题1的答案是“是”,对问题2的答案是“否”,那么为什么?
历史编辑:值得注意的是,苹果决定为iOS 5.0采取不同的路线,并实现ARC(也允许针对相同SDK编译的代码在iOS 4.x上工作)。
1个回答

6

是的,它有真正的垃圾回收功能。MonoTouch基于Mono开发,使用Boehm-Demers-Wiser保守垃圾回收器(紧凑型垃圾回收器正在开发中)。它能够自动收集未引用对象。使用C#和.NET相比使用Objective-C/C++/C在电池寿命方面不太理想,因为需要更多的CPU时钟来完成相同的工作,但如果您的应用程序不需要大量CPU资源,这可能是可以忽略的。我认为对电池寿命没有明显影响。


非常好的回答:事实上,我正在思考GC对iPhone 4.0协议的影响。在某种程度上,使用GC可能被视为“作弊”,这会导致诸如较低的电池寿命等问题。但是,在看着大量的[thing release]语句并分心的时候,我也在思考MonoTouch :) - Dan Rosenstark
1
在此期间,不过,请查看MonoTouch对于他们是否会被新协议开除的猜测:http://www.mono-project.com/newstouch/archive/2010/Apr-19.html - Dan Rosenstark
仅供参考,苹果已经在他们的JavaScript引擎中实现了垃圾回收器。 - Ivan
1
我经常想知道为什么不能在Objective-C中使用你提到的GC... - Dan Rosenstark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接