Language:
Page Info
Engine Version:

動的デリゲート

動的なデリゲートはシリアル化することができます。デリゲートの関数は名前で検索され、通常のデリゲートよりも動作が遅くなります。

動的デリゲートの宣言

動的デリゲートは、動的デリゲート固有の可変長マクロを使用する点を除いて 通常のデリゲートの宣言 と同じ方法で 宣言します。

マクロ宣言 説明
DECLARE_DYNAMIC_DELEGATE[_RetVal, etc.]( DelegateName ) 動的なデリゲートを作成します。
DECLARE_DYNAMIC_MULTICAST_DELEGATE[_RetVal, etc.]( DelegateName ) 動的なマルチキャスト デリゲートを作成します。

動的デリゲートのバインディング

ヘルパーマクロ 説明
BindDynamic( UserObject, FuncName ) 動的デリゲートでBindDynamic() を呼び出すためのヘルパーマクロです。関数名の文字列を自動生成します。
AddDynamic( UserObject, FuncName ) 動的なマルチキャストデリゲートで AddDynamic() を呼ぶヘルパーマクロです。関数名の文字列を自動生成します。
RemoveDynamic( UserObject, FuncName ) 動的なマルチキャスト デリゲートで RemoveDynamic() を呼ぶヘルパー マクロです。関数名の文字列を自動生成します。

動的デリゲートの実行

デリゲートと結合している関数は、デリゲートの Execute() 関数を呼ぶと実行されます。デリゲートが結合しているかどうかを実行前に確認する必要があります。デリゲートに戻り値があり、初期化されていないため後にアクセスされるパラメータを出力する場合があるため、 コードをより安全にするためです。結合していないデリゲートを実行すると、 インスタンスによってはメモリ上に実際に書き込こまれることがあります。デリゲートの実行が安全かどうかは IsBound() で確認できます。デリゲートに戻り値がない場合も ExecuteIfBound() を呼び出せますが、 初期化されていない可能性のある出力パラメータに注意してください。

実行関数 説明
Execute()
ExecuteIfBound()
IsBound()

マルチキャスト デリゲートの実行に関する詳細は マルチキャスト デリゲート をご覧ください。