Zitat von
tigerman33:
...
@maximov:
Sorry, aber ich verstehe nicht so ganz, was du mir sagen willst. Dass ich die Liste von vornherein nur als Interface speichern soll? Bin ich ehrlich gesagt nicht so versessen drauf. Und das mit dem zu niedrigen Referenzzähler hab ich ja umgangen indem ich im Konstruktor einfach die Referenz erhöht hab.
Das Problem ist ja eher folgendes (ich male mal so eine Art "Aufrufdiagramm"):
Liste.Free -> Liste.Destroy -> Liste.BeforeDestruction -> Interface._Release -> Liste.Destroy -> Liste.BeforeDestruction -> Interface._Release
etc etc
Diesen doppelten Aufruf des Destruktors wollte ich umgehen. Aber wie es scheint geht das tatsächlich nur indem ich ein neues Feld einführe.
Das ist schon alles richtig, nur das freigeben würde ich nicht direkt über free machen. Ich dachte das eigentlich so: list.Release (free nicht direkt aufrufen) -> List._Release -> RefCount wird 0 -> Liste.Destroy -> fertig!
Das funktioniert dann auch wenn andere interface-referenzen auf die liste zeigen sollten.
mâxîmôv.
{KDT}