In Java 5 the java.util.concurrent.Callable interface was introduced. This is a generic interface that works like a Runnable, except that it returns a value and can throw checked exceptions.
Using Cocoa, we have a tool that can be used for similar purposes in Objective-C called NSInvocation. We use it transparently in the forwarding implementation of the Strategy Pattern, but don't really get into the details of how it works. Here we'll do that and set one up manually, as well as develop a factory-style method for generating them "on" the fly using variable argument lists.