Wie Darlo schon geschrieben hat, lässt sich das am einfachsten mit Instruments verfolgen, da kann man sich u.a. die komplette Struktur der noch vorhandenen Objekte anzeigen lassen.
Ein Objekt auf nil zu setzen reicht bei ARC nicht unbedingt. Solange noch irgendwelche Verweise auf das Objekt vorhanden sind, wird es nicht freigegeben. Ich habe mir dazu auch zu Debugging-Zwecken eine eigene Routine erstellt:
Code:
procedure TryFree(const AUnitName: String; const AObj: TObject);
begin
if not Assigned(AObj) then
Exit;
{$IFDEF AUTOREFCOUNT}
if AObj.RefCount > 1 then begin
OutputDebugStrFmt('[[%s]] %s.RefCount=%d', [AUnitName, AObj.QualifiedClassName, AObj.RefCount]);
AObj.DisposeOf;
end;
{$ELSE}
AObj.Free;
{$ENDIF AUTOREFCOUNT}
end;
Die ist ziemlich nützlich, auch um Leaks in den Delphi-Komponenten zu finden.