Форум: "Потрепаться";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
ВнизDestroy or Free Найти похожие ветки
← →
novice_man © (2004-11-11 08:29) [0]Что выбрать Destroy или Free (список TList) и в чем разница.
← →
Семен Сорокин © (2004-11-11 08:36) [1]Выбирай Free, он делает проверку на существование экземпляра класса:
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
← →
begin...end © (2004-11-11 08:39) [2]novice_man © (11.11.04 8:29)
Отрывок из справки по TObject.Destroy:
Do not call Destroy directly. Call Free instead. Free verifies that the object reference is not nil before calling Destroy.
Unlike Destroy, Free provides a safeguard when destroying objects that are nil.
А вот и код из System.pas:
destructor TObject.Destroy;
begin
end;
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end.
В других классах (потомках TObject) в деструкторе Destroy могут производиться операции по "подготовке к уничтожению" - освобождение ресурсов, и т.д. Например, вод код деструктора TList.Destroy из Classes.pas:
destructor TList.Destroy;
begin
Clear;
end.
← →
novice_man © (2004-11-11 08:49) [3]Спасибо за ответ. (Да, нужно читать справку к программе)
← →
SergP © (2004-11-11 09:08) [4]
> он делает проверку на существование экземпляра класса:
ИМХО проверка или указатель не равен Nil еще не значит что это проверка на существование экземпляра класса...
← →
Семен Сорокин © (2004-11-11 09:13) [5]
> SergP © (11.11.04 09:08) [4]
Началось, а как Вы обычно проверяете битая ссылка или нет, у Вас есть код?
Имхо, при правильном подходе это именно и есть проверка на существование экземпляра.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c