Замена устаревшей функции Release
Начиная с C++Builder 10.2 в Токио (и, возможно, ранее), FMX.Types.TFmxObject.Release()
метод устарел.
Я использую этот метод на некоторых TForm
объекты для отложенного уничтожения. Все, что я могу найти (см. Эти документы), это (в C++) delete
следует использовать вместо этого, но я не верю, что это знаменует собой форму для отложенного уничтожения.
Есть ли замена для Release()
что следует использовать в этом случае?
1 ответ
Я не знаю, почему Embarcadero устарел Release()
или что они намереваются заменить его, но вы можете попробовать использовать TThread::ForceQueue()
в delete
TForm
объект, например:
void __fastcall TMyForm::ReleaseMe()
{
// Release()
TThread::ForceQueue(NULL, &DeleteMe);
}
void __fastcall TMyForm::DeleteMe()
{
delete this;
}
Или, если вы используете компилятор на основе Clang, вы можете использовать лямбду C++11:
void __fastcall TMyForm::ReleaseMe()
{
// Release()
TThread::ForceQueue(nullptr, [this](){ delete this; });
}
В Delphi вы можете использовать
ReleaseForm;
Я предполагаю, что он есть и для C++ Builder.
В Delphi 10.4 есть действие в OnClose
событие TForm
. Я предполагаю, они хотят, чтобы вы установили его наcaFree
вместо звонка Release
.