Das "falsche Design" liegt hier:
Delphi-Quellcode:
finalization
dxNavBarViewsFactory.UnRegisterView(dxNavBarXP1View);
dxNavBarViewsFactory.UnRegisterView(dxNavBarXP2View);
dxNavBarViewsFactory.UnRegisterView(dxNavBarXPExplorerBarView);
Wenn das Objekt
FNavBarViewsFactory zerstört wird, muss dieses Objekt "wissen", dass
3 View-Objekte registriert sind und UnRegisterView im Destruktor intern ausführen.
Der obige finalization-Abschnitt ist dann völlig überflüssig und wird ertfernt.
Schau mal den Destruktor an, vielleicht wird UnRegisterView schon aufgerufen.