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
Wer sowas macht hat es auch nicht anders verdient!
Die sogenannten
weak Referenzen sind teilweise unumgänglich, da ansonsten auch Interfaces nicht korrekt freigegebn werden (zirkuläre Referenzen)
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)