System.SysUtils.FreeAndNil
Delphi
procedure FreeAndNil(const [ref] Obj: TObject);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure | public | System.SysUtils.pas | System.SysUtils | System.SysUtils |
説明
オブジェクト参照を解放して、nil(Delphi の場合)または NULL(C++ の場合)に置き換えます。
FreeAndNil を使用すると、変数が参照するオブジェクトを解放したのち、変数が nil (Delphi) か NULL (C++) になっていることを保証します。Obj パラメータには、オブジェクトを表す任意の変数を渡します。
警告: Obj は TObject の下位クラスのインスタンスでなければなりません。
C++ は、FreeAndNil の 2 つのテンプレート実装を提供しています。これは、両方 --- 新しく改良されたものと、以前のもの --- の両方の使用パータンが使えるようになっています。古い使用法は、Delphi スタイルのクラス ポインタを渡す必要がある場合にで、次のようになります:
TButton* button1;
....
FreeAndNil(&button1);
RAD Studio 10.4 では、Delphi スタイルのクラス ポインタへの参照を渡すことも可能になりました。次のようになります:
TButton *button1 = <initialization>;
....
FreeAndNil(button1); // No need to take the address of 'button1'
メモ: このロジックは、 これは、FreeAndNil が不正なパラメータで呼び出されたことを意味します。
static_assert
を使用しており、パラメータが FreeAndNil へ、TObject から派生した型へのポインタとして渡されることを保証します。次のコンパイラ エラーが表示された場合: "'T' must derive from System::TObject"