是否可以创建一个IMP,其中参数的数量与正在解析的实例方法的选择器匹配?
我可以使用'if'语句和有限数量的参数(比如介于0和10之间),但是可以使用例如IMP_implementationWithBlock和va_args吗?
答案 0 :(得分:2)
您无法在C中在运行时创建函数;必须在编译时知道参数的数量。
您可以使用可变参数函数假装您有一个包含任意数量参数的函数(我已经包含this usage in a recent project)但这可能不是可移植的,可能是未定义的行为。
如果你需要在运行时之前不知道签名和参数的函数之间移动参数,你几乎肯定想要查看libffi。
Mike Ash有一些非常有用的帖子:http://www.mikeash.com/pyblog/?tag=libffi 这就是我开始学习并了解我所知道的大部分内容。