Ein lebhaftes Beispiel: In einer Anwendung soll man eine Preisdifferenz einstellen können. Der eine mag es lieber mit einer Trackbar, der andere mit einem Spinedit, was auch immer.
Im Anhang das kleine Bild: Ich möchte ein Interface schaffen und die Komponenten (generell Frames) per Interface ansprechen.
Zur Erinnerung: Alles ab
TComponent
lässt sich per Interface referenzieren, aber ARC ist komplett abgeschaltet. Die Lebenszeit einer Komponente wird über den im Konstruktor angegebenen
Owner
bestimmt.
Mein Problem: Wie kann ich eine Komponente nun abräumen, wenn ich sie nur per Interface referenziere?
- Ich könnte eine Dispose()-Methode im Interface vorgeben. Nur damit bleibt die Möglichkeit, dass sich jemand anders die Komponente auch referenziert und dann auf einen Haufen Müll zeigt
- Die Dokumentation zu TComponent spricht: "Komplexere Komponenten sollten __AddRef überschreiben, um eine Referenzzählung zu implementieren." Ich würde ja gerne. Leider haben die Delphi-Jungs vergessen, die Methode virtuell zu machen.
Was kann ich tun?