Bei TInterfaceList-Instanzen muss man sehr vorsichtig sein. TInterfaceList ist nämlich selbst reference counted und die Instanz (in deinem Fall das Feld) sollte vom Typ IInterfaceList sein, sonst kann es zu ganz merkwürdigen Sachen kommen.
Delphi-Quellcode:
...
private
FObservers: IInterfaceList;
...
constructor TSubject.Create;
begin
inherited;
FObservers := TInterfaceList.Create;
end;
...
destructor TSubject.Destroy;
begin
FObservers := nil; // no .Free on Interfaces!
inherited;
end;