Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
7. Feb 2019
Die Frage stellt sich bei korrekter Implementation gar nicht. Solange noch eine Interface-Variable das Interface hält ist die Instanz auch noch da. Ein Interface implementierendes Objekt wird niemals direkt freigegeben, sondern ausschließlich innerhalb eines _Release, wenn dieses den internen RefCount auf 0 setzt. Das ist der Sinn hinter den IInterface-Methoden _AddRef und _Release.
Will oder...
Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
6. Feb 2019
Eigentlich erzeugt der Compiler unsichtbaren Code der bei Verlassen des Scopes alle Interface-Variablen auf nil setzt. Man kann die Variable aber schon vorher auf nil setzen. Ob damit tatsächlich die Instanz freigegeben wird hängt davon ab ob noch andere Referenzen darauf existieren.
Übrigens muss es nicht mal nil sein. Auch das Zuweisen einer anderen Interface-Instanz an diese Variable würde...
Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
4. Feb 2019
So wie TComponent das macht: System.Classes.TComponent.FreeNotification
Funktioniert halt nur mit TComponent, aber nicht mit beliebigen TObject-Abkömmlingen.