![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Destroy в интерфейсе не вызывается? [D7, WinXP]
Cobalt © (2008-12-19 18:05:00)Сделал свой наследник TInterfacedObject, исполняющий мой интерфейс.
У этого класса есть поле - фрейм.
Я хочу освобождать фрейм при уничтожении моего наследника, перекрыл деструктор, поставил в нем брек-пойнт, но остановки в нем не происходит.
Может кто объяснить - почему?
Ведь TInterfacedObject вызывает-таки Destroy
function TInterfacedObject._Release: Integer;
begin
Result := InterlockedDecrement(FRefCount);
if Result = 0 then
Destroy;
end;
Мой класс:
TFireFoxPlugIn = Class(TInterfacedObject, ISaverSettingsPlugIn)
Protected
FFrame: TfrmFireFox;
FVersion: String;
FHasData: Boolean;
FCopyCash: Boolean;
Public
Constructor Create;
function Present: WordBool; safecall;
procedure SaveSettings(Directory: PWideChar; BackUp: WordBool); safecall;
procedure LoadSettings(Directory: PWideChar; BackUp: WordBool); safecall;
procedure GetProgramName(out ProgramName: PWideChar); safecall;
function GetFrame(AParent: TWinControl):TFrame;
Destructor Destroy; override;
Published
Property Version: string read FVersion;
Property HasData: Boolean read FHasData;
Property CopyCash: Boolean read FCopyCash;
end;
Деструктор:
destructor TFireFoxPlugIn.Destroy;
begin
FreeAndNil(FFrame);
inherited;
end;
Cobalt (2008-12-19 20:47:00) [1]Блин, точно!
Я ж ссылки на него не обнуляю )))
Сергей М. (2008-12-19 19:50:00) [2]Приведи фрагменты использования своего объекта