Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
1. Feb 2012
Woher soll der wissen, ob du in deinem Release auf RefCount = 0 überprüfst und dann Free aufrufst (TInterfacedObject) oder ob du nix machst?
Alles, was du in über Interfaces auf dem Container holst, sollte RefCounting benutzen. Genau das gleiche Problem hatte ich mit meinen Views im PresentationModel ja auch. Dort hab ich allerdings noch ein bisschen "drumrum gepfuscht".
Wär schön, und...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
1. Feb 2012
Sicher, dass du ein Memleak der anonymen Methode aus dem Eingangspost hast und nicht eins des Datamodules? Dieses ist nämlich von TComponent abgeleitet, welches kein RefCounting hat und dementsprechend auch nicht über das Interface freigegeben wird (außer, du hast das selber dazwischen geschaltet).
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
1. Feb 2012
Die Ursache liegt irgendwo im Compiler - genau das gleiche Problem hatten wir auch in Spring selber vor einiger Zeit.
Wahrscheinliche Lösung (ungetestet):
procedure RegisterWallpaper;
begin
GlobalContainer.RegisterComponent<TdmWallpaper>.Implements<IdcWallpaper>.AsSingleton.DelegateTo(
function: TdmWallpaper
begin
Result := TdmWallpaper.Create(nil);