System.TObject.DisposeOf

提供: Appmethod Libraries
移動先: 案内検索

Object Pascal

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

C++

void __fastcall DisposeOf(void);

プロパティ

種類 可視性 ソース ユニット
procedure
function
public
System.pas
systobj.h
System TObject

説明

DisposeOf は、オブジェクトのデストラクタ コードを、強制実行します。

新しい Object Pascal モバイル コンパイラでは、DisposeOf を呼び出すことによって実装される、新たな破棄パターンが導入されており、これは、オブジェクトへの保留参照の変数があったとして、デストラクタ コードを実行します。 DisposeOf メソッドが呼び出された後、オブジェクトは特殊な状態、Disposed 状態に置かれます。 これにより、DisposeOf が再び呼び出されても、もしくは、参照カウントが 0 に到達しても(メモリが解放される瞬間になっても)、デストラクタは再度呼び出されなくなります。

DisposeOf の動作は、Object Pascal コンパイラの 2 つの世代で異なります。

  • Object Pascal デスクトップ コンパイラ(DCC32、DCC64、DCCOSX)では、DisposeOf 呼び出しの効果は、Free を呼び出した際と同じに維持されます。
  • Object Pascal モバイル コンパイラ(DCCIOS32、DCCIOSARM)では、デストラクタ コードは、Object Pascal デスクトップ コンパイラと同じ時に実行されますが、メモリは自動参照カウントメカニズムによって管理されます。
 
 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
   // これは、DisposeOf メソッドの呼び出し時に実行される。
 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;
   // ここから開始、オブジェクトは Disposed の状態に入った。
 end.

関連項目