System.TObject.DisposeOf
Delphi
procedure DisposeOf; {$IFNDEF AUTOREFCOUNT} inline; {$ENDIF}
C++
void __fastcall DisposeOf(void);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | System.pas systobj.h |
System | TObject |
説明
DisposeOf は、オブジェクトのデストラクタ コードを、強制実行します。
新しい Delphi モバイル コンパイラでは、DisposeOf を呼び出すことによって実装される、新たな破棄パターンが導入されており、これは、オブジェクトへの保留参照の変数があったとして、デストラクタ コードを実行します。 DisposeOf メソッドが呼び出された後、オブジェクトは特殊な状態、Disposed 状態に置かれます。 これにより、DisposeOf が再び呼び出されても、もしくは、参照カウントが 0 に到達しても(メモリが解放される瞬間になっても)、デストラクタは再度呼び出されなくなります。
DisposeOf の動作は、Delphi コンパイラの 2 つの世代で異なります。
- Delphi デスクトップ コンパイラ(DCC32、DCC64、DCCOSX)では、DisposeOf 呼び出しの効果は、Free を呼び出した際と同じに維持されます。
- Delphi モバイル コンパイラ(DCCIOS32、DCCIOSARM)では、デストラクタ コードは、Delphi デスクトップ コンパイラと同じ時に実行されますが、メモリは自動参照カウントメカニズムによって管理されます。
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.