我应该何时在MonoTouch构建设置中启用“引用计数扩展”?

时间:2012-10-22 10:08:49

标签: ios xamarin.ios garbage-collection automatic-ref-counting

在什么情况下我应该使用此功能?
它到底有多成熟?

有什么优点和缺点?
它解决了什么问题?

是否特定于MonoTouch,Mono GC或ObjC中的引用计数?

enter image description here

1 个答案:

答案 0 :(得分:5)

以下是您的问题的一些快速,高级(和排序或订单)答案......

  

是否特定于MonoTouch,Mono GC或ObjC中的引用计数?

它允许单一垃圾收集器sgen与Objective-C引用计数更紧密地协作。 Mono(或Mono for Android)不需要这种意识,所以它特定于MonoTouch。

  

它到底有多成熟?

用户界面说:实验预览。因此,虽然我们知道它的工作原理,但尚未在应用程序中看到了广泛的用法(与默认的GC相比)。它更像是一个方向而不是一个目的地(即它可能会发展)。

非常欢迎您对其进行测试,使用它(如果它在您的情况下证明是有用的)并报告您的发现/经验。然而,它并不完全支持,例如您可能会遇到我们无法立即修复或解决的错误(除了要求您返回默认设置之外)。

  

它解决了什么问题?

垃圾收集器的共存和Objective-C的引用计数是非常复杂的主题。 MonoTouch尽力将(大部分)复杂性隐藏到开发人员中。

大部分内容都是在运行时内完成的(例如,使用支持字段)。对sgen的扩展意味着GC本身(不仅是运行时)意识到引用计数的需要。

  

有什么优点和缺点?

PRO:它节省了内存,因为linker可以删除许多支持字段,否则这些字段将确保我们保持对托管对象的引用。如果没有那些(引用)支持字段,GC通常会收集实例(而非托管代码仍需要它们)。

CON:我们需要更多反馈,更多比较数据(例如表现)。