4

是否可以创建一个参数数量与正在解析的实例方法的选择器匹配的 IMP?

我可以使用“if”语句和有限数量的参数(比如 0 到 10 之间),但是是否可以使用带有 va_args 的 IMP_implementationWithBlock ?

4

1 回答 1

2

您不能在 C 中在运行时创建函数;在编译时必须知道参数的数量。

您可以使用可变参数函数来假装您有一个带有任意数量参数的函数,(我在最近的一个项目中包含了这种用法)但这可能不可移植并且可能是未定义的行为。

如果您需要在签名和参数直到运行时才知道的函数之间移动参数,您几乎肯定要查看 libffi。

Mike Ash 有一些关于它的非常有用的帖子:http://www.mikeash.com/pyblog/?tag=libffi 这是我开始学习并了解我所知道的大部分内容的地方。

于 2013-08-18T04:55:50.433 回答