Ja, es müsste eigendlich NilAndFree heißen.
Aber hier sollte es keine Probleme bereiten.
Und im Grunde ist es auch garnicht so schlecht, das andersrum.
Probleme gibt es nur, wenn im Destructor auf die globale Variable zugegriffen wird.
Und aus der Instanz raus, sollte man sowieso immer SELF und nicht das Globale verwenden.
Wenn es im Free knallt, dann räumt der Destructor dennoch auf und das Objekt ist weg.
In diesem Fall wäre dann auch die Variable ungültig und es ist schön, dass sie nun auf NIL steht.
Man könnte es aber auch so machen, wenn unbedingt nötig.
Delphi-Quellcode:
try
Image.Free;
finally
Image := nil;
end;