0

我正在研究一个抽象层,用于从 UIWebView 中的 JavaScript 调用到我的应用程序的本机部分。

为此,我需要一种通用机制,将 JavaScript 函数调用转换为 Objective-C 消息到对象。除了在需要块参数的 Objective-C 对象上调用方法之外,这确实工作得很好。

如何以通用方式调用此类方法,而无需将 NULL 作为块参数传递。我想传递一个通用块,然后可以迭代传递给它的所有参数(变量参数)。

换个说法:有没有办法用块参数通用调用任何方法,尽管这些块的特定类型(即签名的差异),以便我可以在随后执行它们时捕获传递给这些块的参数?

4

1 回答 1

0

我还没有确切地尝试过你在做什么,但我想我知道足以说,不幸的是,“不”。

有几个问题在这里对你不利:

  • 块只是块,没有标准的方法可以从块中获取函数指针(可以这样做,但不能以可移植或面向未来的方式)。
  • 即使您有一个函数指针,您也无法使用在运行时确定的多个参数来调用它,而不使用特定于平台的程序集。C 对此的唯一支持是使用va_args.

(我希望我错了,有人会纠正我,但恐怕我不是。)

于 2011-08-25T08:47:33.337 回答