Den Referenzzähler verwaltet Delphi für Dich.
Und zwar wird er erhöht, wenn Du einer Interfacevariable Dein InterfaceObject zuweist und verringert, wenn Du Nil zuweist.
Intf1 := TInterfacedObject.Create; // RefCount = 1
Intf2 := Intf1; // RefCount = 2
Intf1 := Nil; // RefCount = 1
Intf2 := Nil; // RefCount = 0 --> InterfaceObject.Free wird "von Delphi" ausgeführt.
In dem anderen Thread hatte ich Dir das erklärt.
Zitat:
Den Status Nil erhält das SkinPopupMenu wenn der Reverenz Zähler auf 0 ist.
kann also nicht funktionieren, da der Referenzzähler erst auf 0 fällt, wenn alle Referenzvariablen Nil sind.
Also setze SkinPopupMenu auf Nil, wenn das Ding nicht mehr gebraucht wird.
Dann wird der Callback ausgeführt und auch im Hauptprogramm die Referenzvariable auf Nil gesetzt und das Objekt freigeben.
Du musst den Interfacevariablen Nil zuweisen. Den Rest macht Delphi für Dich.
In dem anderen Projekt scheint das ja auch zu klappen.