Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
16. Dez 2011
Wenn man (wie der Code vermuten lässt) sicher stellen kann, daß sich nur INotifyObserver in die InterfaceList eintragen können, dann kann man das Supports auch durch ein einfaches as ersetzen. Somit reduziert sich die Methode auf:
procedure TObserverSubject.NotifyObservers;
var
I: Integer;
begin
for I := 0 to ObserverCollection.Count - 1 do
begin
(ObserverCollection.Items as...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
15. Dez 2011
Schlimmer noch: da TInterfaceList von TInterfacedObject abgeleitet ist, steht nach dem Create der Referenzzähler auf 0, wenn man die erzeugte Instanz keiner Interface-Variablen zuweist. Erfolgt nun irgendwie ein AddRef, führt das ausgleichende Release zur sofortigen Freigabe der Instanz. Das Ganze ist somit eine Art Zeitbombe, deren Ursache später nur schwer zu finden ist.