Функции, возвращающие интерфейсы
Есть простой тестовый код:
program intftest;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
type
ITest = Interface
['{F76722CE-6B62-49FE-8D5E-8646558DE528}']
function GetRefCount: Integer;
end;
TTest = class(TInterfacedObject, ITest);
function GetTest: ITest;
begin
Result := TTest.Create;
WriteLn(Result.GetRefCount); // 1
end;
var
Test: ITest;
begin
try
Test := GetTest;
WriteLn(Test.GetRefCount); // 2
Test := nil;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
ReadLn;
end.
Вопрос: что я делаю не так, почему по выходу из функции GetTest() значение Test.RefCount = 2? И как в этом случае корректно уничтожить объект?..