Einzelnen Beitrag anzeigen

renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Classes/Interfaces, Reference counting, wann/wie

  Alt 23. Jun 2020, 07:22
Hallo,

ich verstehe es nicht ganz, wann das Reference-Counting der Interfaces genutzt wird. Also,

Beispiel:
Code:
  ITest = interface(IInterface)
    procedure CallInterface(testObject: ITest);
  end;

  TTest = class(TInterfacedObject, ITest)
  public
    procedure CallInterface(testObject: ITest);
    procedure CallInstance(testObject: TTest);  
  end;

procedure TForm1.Test();
var
  testInterface: ITest;
  testInstance: TTest;
begin

  // Funktioniert.
  testInstance := TTest.Create;
  testInstance.CallInstance(testInstance);
  testInstance.Free;

  // Interface wirft Fehler, obwohl immer nach TTest gecastet wird
  testInterface := TTest.Create;
  (testInterface as TTest).CallInstance(testInterface as TTest);
  (testInterface as TTest).Free;   // Fehler

  // auch wenn ich mit einer Klasseninstanz arbeite, diese aber an eine Funktion übergeben, die das Interface erwartet, gibt es Fehler.
  // Es wird doch kein neues Objekt erzeugt, sondern nur die Referenz an die Funktion übergeben
  testInstance := TTest.Create;
  testInstance.CallInterface(testInstance);
  testInstance.Free;      // Fehler
 
 end;
Kann mir jemand erklären, wann das Reference-Counting genutzt wird?
  Mit Zitat antworten Zitat