gpt4 book ai didi

firemonkey - 替换已弃用的 Release 函数

转载 作者:行者123 更新时间:2023-12-05 04:08:08 25 4
gpt4 key购买 nike

从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com