我实现了以下类:
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
什么?据我所知,迭代不是好主意。