【发布时间】:2023-03-17 04:52:01
【问题描述】:
所以我正在研究 obj-c 中的一些东西(我不想说什么),我需要能够在具有任意变量的任意对象上调用任意方法。前两个很容易做到,但我不确定如何做变量参数。需要明确的是,这不是关于接收变量参数的函数/方法,而是关于发送它们。我找到了两种方法来做到这一点:objective-c 运行时中的 objc_msgSendv(及其变体)和 NSInvocation。 NSInvocation 似乎更容易,更像是“最佳实践”,但 objc_msgSendv 听起来应该更快,而且我需要多次执行此操作,每次都使用完全不同的消息。我应该选择哪一个? objc_msgSendv 禁忌是有充分理由的吗? (文档说不要调用 objc_msgsend 函数。)
附:我知道所有参数的类型,并不是所有的都是id-s
另外,(不是主要问题的一部分,)似乎没有办法从 objc_msgSendv 向 super 发送消息,但在 NSInvocation 中似乎也没有办法做到这一点,所以任何帮助那也太好了。
【问题讨论】:
标签: objective-c