Nja, im Notfall kann man immer FreeAndNil machen, was nahezu nie verkehrt ist.
Während bei einem .Free das nötige Zurücksetzen der Variable eventuell fehlen könnte. (z.B. für nachfolgende if-Assigned)
Und
könnte zwar richtig sein, aber wenn es im Free knallt, dann würde das NIL nicht mehr ausgeführt.
Zu
Delphi-Quellcode:
try
x.Free;
finally
x := nil;
end;
hat man oft keine Lust, was man aber mit FreeAndNil (eigentlikch NilAndFree) viel "einfacher" haben würde.
Und über ein Property oder ein Function-Result zu Löschen, da geht nur Free.
Für FreeAndNil müsste man es erst in eine Variable umkopieren.
(aber nur sinnvoll, wenn sich das Objekt da drüben auch selbst deregistriert/entfernt)
Krank / unverständlich empfinde ich aber, dass man Assigned bei Property/Result nicht direkt nutzen kann.
Wieso eigentlich nicht? (ein <>NIL als Ersatz ginge zwar, aber ist schon bissl inkonsistent, wenn sonst überall anders mit Assigned)