Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
18. Okt 2010
IInterface ist wie das TObject bei Klassen, davon wird immer abgeleitet
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
18. Okt 2010
Die Referenzzählung erfolgt nicht im Interface, sondern im Objekt das mit dem Interface verbunden deklariert wird. Automatisch implementiert ist das bei TInterfacedObject. Dazu kannst du dir den Quelltext anschauen, wie die Referenzzählung dort umgesetzt ist.
Dann weißt du auch wie man das abstellen kann
(IInterface als Basis-Interface schreibt nur zwingend vor, dass die Methoden für die...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
18. Okt 2010
Wenn ich alle Referenzen entfernt habe, dann hat die übergeordnete Komponente immer noch eine Referenz ... somit ist die Referenzzählung auch nicht auf 0, logisch erfolgt da keine Freigabe, weil de facto nicht alle Referenzen verschwunden sind
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
18. Okt 2010
Hmmm, also mal sehen was da mit einem normalen TObject passiert:
foo := TMyObject.Create;
foo := nil;
Die Instanz von TMyObject ist jetzt unwiederbringlich verloren ... weil wir haben den Kontakt verloren.
Folge: Speicherleck!
Bei einem Interface kann das nicht passieren, das würde in so einem Fall auch aus dem Speicher entfernt.
Ich verstehe somit nicht, warum du die Referenzzählung...