unit Unit1;
interface
type
InterfaceA = interface(IInterface)
['{A1229A9D-E207-4CBD-9432-FEFD9D3C1684}']
function Add(sum1, sum2: Integer): Integer;
end;
ImplA = class(TInterfacedObject, InterfaceA)
public
function Add(sum1, sum2: Integer): Integer;
end;
Temp = class
public
function GetInterfaceA: InterfaceA;
procedure LocalTest;
end;
implementation
{ Temp }
function Temp.GetInterfaceA: InterfaceA;
begin
Result := ImplA.Create;
end;
procedure Temp.LocalTest;
var
IntfA: InterfaceA;
begin
IntfA := Self.GetInterfaceA; //_AddRef wird hier jedoch nur ein einziges mal aufgerufen, woher kommt der Unterschied?
IntfA := nil; //_Release wird erwartungsgemäß aufgerufen
end;
{ ImplA }
function ImplA.Add(sum1, sum2: Integer): Integer;
begin
Result := 42;
end;
end.