如何在Delphi XE7中关闭autorefcount?

Fri*_*iso 3 delphi delphi-xe7

我正在研究的系统已经制作了自己的引用计数单元,但它与Delphi相互冲突.我试图让它与编译器条件兼容,但我仍然遇到了一些我认为可能导致的错误,因为ARC仍然存在.

Dal*_*kar 10

很简单,你不能在支持它的平台(目前是Android和iOS)上全局关闭Delphi编译器ARC.

但是,可以在代码中绕过ARC以获取特定引用.

ARC编译器介绍[weak][unsafe]属性.

[weak]可用于标记不参与引用计数的弱引用,但您仍需要至少有一个强引用来保持对象存活.nil当对象被销毁时,也会设置弱引用.

[unsafe] 可用于完全转向引用计数以供特定参考,但它应在极少数情况下使用,它将禁止您混合计数和非计数参考,导致使用非常有限.

此外,声明为constvar不参考计数的参数.

ARC在Delphi移动编译器中的应用

  • 没错,你不能*禁用*Delphi的ARC引用计数.但是,您可以在需要时绕过它.声明为`const`和`var`的参数不会被重新计数.声明为"[weak]"的对象变量没有被重新计数(尽管它们被跟踪为自动nil'ing).如果`[weak]`不希望/ feisable,你可以在赋值时使用'Pointer`类型转换.当然,`Free()`/`FreeAndNil()`将不再起作用,你必须直接调用`Destroy()`/`DisposeOf()`.不是一个完美的解决方案,但在某些情况下它可能会有所帮助. (2认同)