What's better practice: objc_msgSendv or NSInvocation?

Posted by Jared P on Stack Overflow See other posts from Stack Overflow or by Jared P
Published on 2010-03-21T02:47:25Z Indexed on 2010/03/21 2:51 UTC
Read the original article Hit count: 343

Filed under:

So I'm working on something in obj-c (I'd rather not say what) where I need to be able to call arbitrary methods on arbitrary objects with arbitrary variables. The first two are easy enough to do, but I am unsure how to do the variable arguments. To be clear, this is not about a function/method receiving variable arguments, but about sending them. I have found two ways to do this: objc_msgSendv (and its variants) in the objective-c runtime, and NSInvocation. NSInvocation seems easier and more like it's the 'best practice', but objc_msgSendv sounds like it should be faster, and I need to do this many, many times over, with completely different messages each time. Which one should I choose? Is objc_msgSendv taboo for a good reason? (the docs say not to call the objc_msgsend functions.)

P.S. I know the types of all the arguments, and not all of them are id-s

Also, (not part of the main question,) there doesn't appear to be a way to message super from objc_msgSendv, but there doesn't seem to be a way to do that in NSInvocation either, so any help on that would be great too.

© Stack Overflow or respective owner

Related posts about objective-c