Einzelnen Beitrag anzeigen

bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#9

Re: Problem mit 'nil' bei Objekten

  Alt 19. Mär 2005, 02:04
schau dir einfach mal die _AddRef- und _Release-Funktionen der Basisklassen an, dann dürftest Du das ganze leicht verstehen (Unit System):

Delphi-Quellcode:
function TInterfacedObject._AddRef: Integer;
begin
  Result := InterlockedIncrement(FRefCount);
end;

function TInterfacedObject._Release: Integer;
begin
  Result := InterlockedDecrement(FRefCount);
  if Result = 0 then
    Destroy;
end;
_Release ruft halt den Destruktor auf, wenn der interne Zähler 0 ist. Das ist fatal, weil das in vielen Fällen nicht heißt, dass das Objekt nicht mehr referenziert wird.

Man kann das umgehen, indem man eine eigene Klasse von TInterfacedObject ableitet und _Release überschreibt.
  Mit Zitat antworten Zitat