Код: Выделить всё
TApplication = Class(TInterfacedObject)
...
end;В программе пишу:
Код: Выделить всё
var
app: TApplication;
begin
app := TApplication.Create();
end.При этом вот деструктор не вызывается, его надо вызывать вручную, т.е. app.Free(). Ситуация не меняется, если типом объекта я указываю TInterfacedObject. Но дальше я делаю так:
Код: Выделить всё
var
app: IUnknown;
begin
app := TApplication.Create();
end.И что же? Деструктор вызывается самостоятельно, как только объект покидает область видимости.
Собственно, вопрос. Так и должно быть или это косяк? Почему если класс реализует интерфейс, то его поведение становится ожидаемым только если я указываю типом сам интерфейс? Получается, если тип - не интерфейс, то и реализации интерфейса не происходит?
