我有一个用于显示某些信息几秒钟的表单。表单可以自由释放吗?我可以在构造函数中启动一个计时器,然后在timer-event中调用self.free吗?或者这可能会导致麻烦吗?
答案 0 :(得分:30)
此外,您可以使用表单拨打Release
。
它向表单发送CM_RELEASE消息。作为一种反应,它称为自由。 释放的优点是表单中没有留下可能导致崩溃的消息。
答案 1 :(得分:17)
当用户或代码关闭时,您可以使表单自由释放:
procedure TForm27.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TForm27.FormCreate(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm27.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
Close;
end;
确保在构造函数中提供所有者,以便应用程序关闭,并且表单当时不会被销毁。所有者将在释放之前释放该表单。
答案 2 :(得分:1)
我有一整套自由的对象,我对它们进行了各种测试,没有出现任何问题/泄漏。 TForm可能更复杂,但只要Self.Free()是最后一次调用,你应该是安全的。
(对于那些想知道为什么在地球上我有自由的对象的人;我经常在系统中传递它们,所以我通过自己的引用计数方案实现。当最后一个引用被释放时,对象就自由了。) / p>
答案 3 :(得分:0)
这正是Interfaces所做的。