Ich behaupte also man darf so wie oben nicht programmieren
Ich behaupte das Gegenteil!
Erzeuge mal eine Instanz der folgenden Klasse und gib sie wieder frei:
Delphi-Quellcode:
type
TMyObject = class
public
destructor Destroy; override;
procedure FreeInstance; override;
end;
destructor TMyObject.Destroy;
begin
ShowMessage('Destroy before');
inherited;
ShowMessage('Destroy after');
end;
procedure TMyObject.FreeInstance;
begin
ShowMessage('FreeInstance');
inherited;
end;
Ich bekomme folgende Meldungen:
Destroy before
Destroy after
FreeInstance
Da die Freigabe des Speichers erst in TObject.FreeInstance erfolgt, ist die Instanz während des gesamten Destroy noch existent. (Getestet in XE ohne FastMM4)