从 C++Builder 10.2 Tokyo(或许更早)开始,FMX.Types.TFmxObject.Release()
方法已弃用。
我在一些 TForm
对象上使用这个方法来延迟销毁。我所能找到的(参见 these docs)是(在 C++ 中)应该使用 delete
,但我不认为这标志着延迟销毁的形式。
在这种情况下是否应该使用 Release()
的替代品?
最佳答案
我不知道为什么 Embarcadero 弃用了 Release()
或他们打算将其替换为什么,但您可以尝试使用 TThread::ForceQueue()
删除
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; });
}
关于firemonkey - 替换已弃用的 Release 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47934665/