Ich bin nun einfach mal so dreist und nutze deinen Quellcode, da der als Beispiel sehr gute passt
Delphi-Quellcode:
type
ISomeInterface = interface
procedure registerObject(aObject: TObject);
end;
TSomeInterface = class(TInterfacedObject, ISomeInterface)
public
FVar : TObject;
procedure registerObject(aObject: TObject);
end;
procedure TSomeInterface.registerObject(aObject: TObject);
begin
FVar := aObject;
end,
// ...
procedure blaaa(aObject: TObject);
var
tmp : TSomeInterface;
begin
tmp := TSomeInterface.Create();
tmp.registerObject(blub);
// hier kommt nun die tolle Stelle
FreeAndNil(tmp);
end;
So hab ich das in meinem Quellcode gemacht. Ich weiß nicht, was daran falsch sein soll bzw. es ist ja in so fern falsch, dass ab nach dem FreeAndNil(tmp) dann das Objekt blub ebenfalls zerstört wird. Auf das Objekt blub, welches irgendwo anders erzeugt worden ist, zeigt aber definitiv noch eine Referenz, da es in einer Liste (TList) eingetragen wurde. Ich weiß nun nicht, was genau das Interface mit meinem Objekten anstellt. Es kann ja nicht sein, dass auf alle Referenzen innerhalb es tmp-Objekts ein Free() oder FreeAndNil() automatisch angewendet wird?!
PS: Kennst du ein gutes Tutorial oder dergleichen, wo man das nachlesen kann?! Habe bisher eben noch kein gutes gefunden, wo drin stehst was wann und warum passiert!?
mit freundlichen Grüßen
Armin
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)