次のクラスを実装しました。
type
TUtilProcedure = procedure(var AJsonValue: TJSONObject);
TCallback = class
private
FName: string;
FProcedure: TUtilProcedure;
FAnnotation: string;
public
constructor Create(AName: string; AProcedure: TUtilProcedure; AAnnotation: string); overload;
constructor Create(ACallback: TCallback); overload;
property Name: string read FName;
property Proc: TUtilProcedure read FProcedure;
property Annotation: string read FAnnotation;
end;
次に、グローバル変数があります。
procedures: TDictionary<string, TCallback>;
OnFormActivate
手順で、変数procedures
を初期化します。
procedures := TDictionary<string, TCallback>.Create();
procedures.Add('something', TCallback.Create('sth', @proc, 'annotation'));
// ....
そして、私はそれOnFormClose
を解放します:
procedures.Clear;
procedures.Free;
私のコードはメモリをリークしますか? もしそうなら、を解放する正しい方法は何dictionary
ですか? 私が知っていることから、反復は良い考えではありません。