具有未知数量参数的IMP

时间:2013-08-18 04:38:56

标签: objective-c objective-c-runtime

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

我可以使用'if'语句和有限数量的参数(比如介于0和10之间),但是可以使用例如IMP_implementationWithBlock和va_args吗?

1 个答案:

答案 0 :(得分:2)

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

您可以使用可变参数函数假装您有一个包含任意数量参数的函数(我已经包含this usage in a recent project)但这可能不是可移植的,可能是未定义的行为。

如果你需要在运行时之前不知道签名和参数的函数之间移动参数,你几乎肯定想要查看libffi。

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