Ein Prüfung auf (..) Assigned wird bei Free nicht funktionieren, da Free den Zeiger nicht auf Nil setzt.
Wirklich?
Ja, wirklich. Ich finde das eigentlich auch vernünftig und verwende grundsätzlich nur Free und nicht FreeAndNil. FreeAndNil wiegt einen nur in falscher Sicherheit, da es ja auch noch weitere Referenzen auf das Objekt geben kann, die von FreeAndNil nicht auf nil gesetzt werden.
Delphi-Quellcode:
var
x,y: TObject;
begin
x := TObject.Create;
y := x;
FreeAndNil(x);
if Assigned(x) then WriteLn('x assigned');
if Assigned(y) then WriteLn('y assigned');
end;
Edit: Nur zur Klarstellung, das bezieht sich jetzt natürlich auf klassisches Delphi, nicht auf ARC.