从C ++ Builder 10.2 Tokyo开始(可能更早),不推荐使用FMX.Types.TFmxObject.Release()
方法。
我在某些TForm
个对象上使用此方法来延迟销毁。我所能找到的(见these docs)是(在C ++中)应该使用delete
代替,但我不认为这标志着延迟破坏的形式。
在这种情况下,是否应该替换Release()
?
答案 0 :(得分:2)
我不知道为什么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; });
}
答案 1 :(得分:0)
在Delphi 10.4中,OnClose
的{{1}}事件中有一个动作。我假设他们希望您将其设置为TForm
而不是调用caFree
。
答案 2 :(得分:0)
在Delphi中,您可以使用
ReleaseForm;
我认为C ++ Builder也可以使用它。