从 C++Builder 10.2 Tokyo(可能更早)开始,该FMX.Types.TFmxObject.Release()
方法已被弃用。
我在一些TForm
对象上使用这种方法来延迟销毁。我所能找到的(参见这些文档)是delete
应该使用(在 C++ 中),但我不认为这标志着延迟销毁的形式。
Release()
在这种情况下应该使用那个替代品吗?
从 C++Builder 10.2 Tokyo(可能更早)开始,该FMX.Types.TFmxObject.Release()
方法已被弃用。
我在一些TForm
对象上使用这种方法来延迟销毁。我所能找到的(参见这些文档)是delete
应该使用(在 C++ 中),但我不认为这标志着延迟销毁的形式。
Release()
在这种情况下应该使用那个替代品吗?
我不知道为什么 Embarcadero 已弃用Release()
或他们打算将其替换为什么,但您可以尝试使用TThread::ForceQueue()
该delete
对象TForm
,例如:
void __fastcall TMyForm::ReleaseMe()
{
// Release()
TThread::ForceQueue(NULL, &DeleteMe);
}
void __fastcall TMyForm::DeleteMe()
{
delete this;
}
或者,如果您使用的是基于 Clang 的编译器,则可以改用 C++11 lambda:
void __fastcall TMyForm::ReleaseMe()
{
// Release()
TThread::ForceQueue(nullptr, [this](){ delete this; });
}
在德尔福你可以使用
ReleaseForm;
我会假设它也适用于 C++ Builder。
在 Delphi 10.4 中,OnClose
在TForm
. 我假设他们希望您将其设置为caFree
而不是调用Release
.