Wenn mit Interfaces gearbeitet wird, dann sollte dieses durchgängig gemacht werden.
Delphi-Quellcode:
class function TStartupManagerFactory.Create(): IStartupProcess;
begin
Result := TBaseStartupProcess.Create();
Result := StartupProcess;
AddStartupCommands(Result);
end;
Standardmäßig ist eine Mischbehandlung nicht sicher, da die Referenzzählung keine Ahnung davon hat, ob irgendwo Variablen Referenzen auf das Objekt besitzen, da nur Referenzen auf das Interface gezählt werden.
Wie ist denn AddStartupCommands deklariert?
(der Parameter als Interface oder als Objekt)