Delphi XE7 Android 如何存储函数指针以供以后访问?

Delphi XE7 Android how to store function pointers to later access?

当使用 Delphi 创建 Windows 应用程序时,可以将函数指针存储在 TStringList 变量中,例如...

function n_func(var data: integer): integer;
begin
  //do something with data that will change its value
  Result := data;
end;

...

var
  ls: TStringList;
begin
  try
    ls := TStringList.Create;
    ls.AddObject('myfunc', TObject(@n_func));
    ...
    ...
  finally
    ls.Free;
  end;
end;

但这不是 Android 中的一个选项,I've read this article 解释了当需要存储对对象的引用时如何解决问题。当需要存储对函数的引用时,有什么类似的解决方案可以稍后在应用程序执行期间动态调用?

使用字典。声明函数的类型:

type
  TMyFuncType = reference to function(var data: integer): integer;

然后字典:

var
  Dict: TDictionary<string, TMyFuncType>;

以常规方式创建一个:

Dict := TDictionary<string, TMyFuncType>.Create;

这样添加:

Dict.Add('myfunc', n_func);

像这样检索

Func := Dict['myfunc'];

从文档中了解更多信息:http://docwiki.embarcadero.com/Libraries/en/System.Generics.Collections.TDictionary