On Feb 1, 2010, at 3:30 AM, Per Bull Holmen wrote: > I've been playing around with the idea of making a simple bridge between > Objective-C (running under Cocoa) and a script language. Not for the API, > that is, but for user defined classes and methods. For this reason, I'd like > to know whether there are any other ways than NSInvocation to send a message > without knowing arg types and numbers at compile time. Non-hackish ways, that > is. I see that people used objc_msgSendv earlier, but it is no longer > available in Objective-C 2.0. Also, using objc_msgSend doesn't seem to be > platform independent (PPC/Intel). So, does this mean that NSInvocation is the > only civilised way to go? NSInvocation is great, it's just that there's a lot > of overhead, so I assume this is because it has functionality I might not > need?
NSInvocation is the most architecture-neutral way to go. The best option outside NSInvocation is to use libffi to build calls to objc_msgSend. libffi-based code is architecture-neutral for simple examples, but falls into architecture-specific holes in more complicated examples. One place where it is architecture-specific is methods that return C structs: they may use objc_msgSend or objc_msgSend_stret depending on the struct's layout, and different architectures have different rules. Using objc_msgSend and especially objc_msgSendv directly is almost always architecture-specific. -- Greg Parker gpar...@apple.com Runtime Wrangler _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com