Ali*_*ter 6 delphi interface tform
如果我在一个表单上实现一个接口,TMyForm = class(TForm, IMyInterface)
当没有更多的接口引用时,该对象是否会自行释放?似乎没有,虽然我无法弄清楚如何计算TForm(如果有的话).当接口引用超出范围时,我担心表单被释放,但这似乎不会发生.
我想这个问题有两个部分,首先是一个表单是否可能意外释放(真正的问题),其次是表单是如何计算引用的.
Uwe*_*abe 13
TForm
派生自TComponent
,实现_AddRef()
和_Release()
禁用对自身的引用计数.因此,任何TComponent
后代类实现的任何接口,例如TForm
,TComponent
在释放接口时都不会释放其实现对象.
但是,如果IVCLComObject
为该TComponent.VCLCOMObject
属性分配了接口,则会TComponent
将引用计数委托给该对象,以便在其引用计数降为0(TComponent
不增加其引用的引用计数)时释放该对象IVCLCOMObject
.
这对所有后代都有效TComponent
,除非他们通过覆盖_AddRef()
和_Release()
手动实现自己的任何引用计数.