如何在 Delphi XE7 中关闭 autorefcount?
How can I turn off autorefcount in Delphi XE7?
我正在使用的系统有自己的引用计数单元,但它与 Delphi 有冲突。我试图使其与编译器条件兼容,但我仍然遇到了几个错误,我认为这些错误可能是由于 ARC 仍在运行而引起的。
很简单,您无法在支持的平台上全局关闭 Delphi 编译器 ARC(目前为 Android 和 iOS)。
但是,可以在特定引用的代码中绕过 ARC。
ARC 编译器引入了 [weak]
和 [unsafe]
属性。
[weak]
可用于标记不参与引用计数的弱引用,但您仍然需要至少有一个强引用才能使对象保持活动状态。当对象被销毁时,弱引用也被设置为 nil
。
[unsafe]
可用于完全关闭特定引用的引用计数,但它是为了在极少数情况下使用,它会禁止您混合计数和非计数引用,从而导致非常有限利用率。
此外,声明为 const
和 var
的参数不被引用计数。
我正在使用的系统有自己的引用计数单元,但它与 Delphi 有冲突。我试图使其与编译器条件兼容,但我仍然遇到了几个错误,我认为这些错误可能是由于 ARC 仍在运行而引起的。
很简单,您无法在支持的平台上全局关闭 Delphi 编译器 ARC(目前为 Android 和 iOS)。
但是,可以在特定引用的代码中绕过 ARC。
ARC 编译器引入了 [weak]
和 [unsafe]
属性。
[weak]
可用于标记不参与引用计数的弱引用,但您仍然需要至少有一个强引用才能使对象保持活动状态。当对象被销毁时,弱引用也被设置为 nil
。
[unsafe]
可用于完全关闭特定引用的引用计数,但它是为了在极少数情况下使用,它会禁止您混合计数和非计数引用,从而导致非常有限利用率。
此外,声明为 const
和 var
的参数不被引用计数。