Der Code in Ihrer Frage wurde wahrscheinlich von jemandem geschrieben, der keine Ahnung von FreeAndNil
. Oder vielleicht wurde es ursprünglich geschrieben, bevor FreeAndNil
zu RTL hinzugefügt wurde. Wenn Sie den Verweis aufheben wollen, können Sie ebenso gut FreeAndNil
. Es ist nicht hilfreich, sie mit der Hand aufzuschreiben.
Der einzige wirkliche Unterschied besteht darin, dass FreeAndNil
setzt den Verweis auf Nil
auch wenn Free
erhebt. Aber Ihre Destruktoren sollten sowieso nie erhöhen, so dass dies nicht, dass eine große Sache in meinen Augen.
Es gibt eine gemeinsame Falle mit FreeAndNil
. Da er einen nicht typisierten Parameter annimmt, können Sie ihm alles übergeben. Zum Beispiel können Sie eine Schnittstelle, einen Datensatz usw. übergeben. Wenn Sie diesen Fehler machen, kommt es in der Regel zu seltsamen Laufzeitfehlern.
Ich werde jetzt nicht darüber diskutieren, ob FreeAndNil
ist eine geeignete Wahl für die Gestaltung. Dieses Thema wurde bereits an anderer Stelle ausführlich behandelt.