objective-c – 参数数量未知的IMP

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

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

最佳答案 您无法在C中在运行时创建函数;必须在编译时知道参数的数量.

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

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

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

点赞