在什么情况下我应该使用此功能?
它到底有多成熟?
有什么优点和缺点?
它解决了什么问题?
是否特定于MonoTouch,Mono GC或ObjC中的引用计数?
答案 0 :(得分:5)
以下是您的问题的一些快速,高级(和排序或订单)答案......
是否特定于MonoTouch,Mono GC或ObjC中的引用计数?
它允许单一垃圾收集器sgen
与Objective-C引用计数更紧密地协作。 Mono(或Mono for Android)不需要这种意识,所以它特定于MonoTouch。
它到底有多成熟?
用户界面说:实验预览。因此,虽然我们知道它的工作原理,但尚未在应用程序中看到了广泛的用法(与默认的GC相比)。它更像是一个方向而不是一个目的地(即它可能会发展)。
非常欢迎您对其进行测试,使用它(如果它在您的情况下证明是有用的)并报告您的发现/经验。然而,它并不完全支持,例如您可能会遇到我们无法立即修复或解决的错误(除了要求您返回默认设置之外)。
它解决了什么问题?
垃圾收集器的共存和Objective-C的引用计数是非常复杂的主题。 MonoTouch尽力将(大部分)复杂性隐藏到开发人员中。
大部分内容都是在运行时内完成的(例如,使用支持字段)。对sgen
的扩展意味着GC本身(不仅是运行时)意识到引用计数的需要。
有什么优点和缺点?
PRO:它节省了内存,因为linker可以删除许多支持字段,否则这些字段将确保我们保持对托管对象的引用。如果没有那些(引用)支持字段,GC通常会收集实例(而非托管代码仍需要它们)。
CON:我们需要更多反馈,更多比较数据(例如表现)。