System.TObject.DisposeOf

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

procedure DisposeOf; {$IFNDEF AUTOREFCOUNT} inline; {$ENDIF}

C++

void __fastcall DisposeOf(void);

Propriétés

Type Visibilité  Source Unité  Parent
procedure
function
public
System.pas
systobj.h
System TObject


Description

DisposeOf force l'exécution du code du destructeur dans un objet.

Les nouveaux compilateurs mobiles Delphi introduisent un nouveau modèle Dispose implémenté par un appel de DisposeOf, qui exécute le code du destructeur même en présence de variables avec des références en suspens à l'objet. Après l'appel de la méthode DisposeOf, l'objet est placé dans un état spécial, l'état Disposed. Cela signifie que le destructeur n'est plus appelé si DisposeOf est appelée de nouveau ou si le compteur de références atteint la valeur zéro (le moment où la mémoire est libérée).

Le comportement de DisposeOf est différent dans les deux générations de compilateurs Delphi :

  • Dans les compilateurs de bureau Delphi (DCC32, DCC64, DCCOSX), l'effet d'un appel de DisposeOf reste le même, puisqu'elle appelle Free.
  • Dans les compilateurs mobiles Delphi (DCCIOS32, DCCIOSARM), le code du destructeur s'exécute au même moment que les compilateurs de bureau Delphi, mais la mémoire est gérée par le mécanisme de comptage de références automatique.
 type
 TMySimpleClass = class
 private
 //
 stringMember: String;
 constructor Create(Text: String);
 destructor Destroy;
 end;
 
 constructor TMySimpleClass.Create(Text: String);
 begin
 stringMember := Text;
 end;
 
 destructor TMySimpleClass.Destroy;
 begin
 // this will be executed on calling the DisposeOf method.
 end;
 
 var
 myObject: TMySimpleClass;
 begin
 myObject := TMySimpleClass.Create
 ('This is a code snippet indicating the usage of the DisposeOf method');
 if not myObject.Disposed then
 myObject.DisposeOf;
 //Starting here, the object has entered the Disposed state.
 end.

Voir aussi