我创建了ITask
(TTask.Create(...)
)。它按预期工作。完成工作后,任务状态显示我已完成"。
我应该以某种方式释放ITask
对象,还是自动释放它?
答案 0 :(得分:3)
与在其后代中实现TInterfacedObject
的任何接口(默认)一样,ITask
被引用计数。这意味着一旦引用计数为零,它将自毁。这意味着您不必手动释放它。
请参阅Memory Management of Interface Objects:
接口设计背后的一个概念是确保实现它们的对象的生命周期管理。 IInterface的_AddRef和_Release方法提供了实现此生命周期管理的方法。 _AddRef和_Release通过在将接口引用传递给客户端时递增对象的引用计数来跟踪对象的生命周期,并在引用计数为零时销毁该对象。
如果任务完成,也可以通过指定nil值来销毁FTask
。这也将减少引用计数。