我正在研究的系统已经制作了自己的引用计数单元,但它与Delphi相互冲突。我试图使它与编译条件兼容,但我仍然遇到了一些我认为可能因为ARC仍然存在而引起的错误。
答案 0 :(得分:10)
很简单,你不能在支持它的平台(目前是Android和iOS)上全局关闭Delphi编译器ARC。
但是,可以在特定引用的代码中绕过ARC。
ARC编译器引入[weak]
和[unsafe]
属性。
[weak]
可用于标记不参与引用计数的弱引用,但您仍需要至少有一个强引用来保持对象存活。当对象被销毁时,弱引用也被设置为nil
。
[unsafe]
可用于完全转换引用计数以供特定参考,但它意味着在极少数情况下使用,它将禁止您混合计数和非计数引用,导致使用非常有限。
此外,声明为const
和var
的参数不会被引用计数。