Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: TInterfacedObject wird nicht freigegeben

  Alt 18. Mär 2014, 11:20
Delphi-Quellcode:
var YourObject : ...;

if YourObject.Type.BeginsWith.I then
  Object := nil;

if YourObject.Type.BeginsWith.T then
  Object.Free;
Du hast da noch was vergessen
Delphi-Quellcode:
TMyClass = class( TInterfacedObject )
end;

var
  MyInstance : TMyClass;
  MyInterface : IInterface;

// das geht
MyInstance := TMyClass.Create;
MyInstance.Free;

// das knallt
MyInstance := TMyClass.Create;
MyInterface := MyInstance; // Referenz-Zähler auf 1
MyInterface := nil; // Referenz-Zähler auf 0 => Instanz wird freigeben
MyInstance.Free; // rumms
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat