On Fri, Dec 12, 2008 at 2:14 PM, Kyle Sluder <kyle.sluder+cocoa-...@gmail.com> wrote: > On Fri, Dec 12, 2008 at 9:12 AM, Kyle Sluder > <kyle.sluder+cocoa-...@gmail.com> wrote: >> On Fri, Dec 12, 2008 at 8:53 AM, Jonathan del Strother >>> The number of arguments isn't known at compile-time. I'd like to be >>> able to take an NSArray of the arguments, and programmatically convert >>> that to something suitable for invoking the method. > > Wait, I seem to have misunderstood you. Do you want to take a known > set of arguments and pass that off to a variadic function? >
Maybe an example would be helpful. Let's say I want to call -[Bartender mixCocktailIngredients:(NSString*)ingredient ...], and I want to call that with different arguments depending on the user's preferences. One way of doing so would be to use an if-statement, and just type out all the possibilities: if (user.likesTequila) [bartender mixCocktailIngredients:@"gin", @"vodka", @"tequila", nil]; else [bartender mixCocktailIngredients:@"gin", @"vodka", nil]; Which works fine, but rapidly expands into a huge if-statement as you try and handle more states. Ideally I'd like to do something along the lines of: NSMutableArray* ingredients = [NSMutableArray arrayWithObjects:@"gin", @"vodka", nil]; if (user.likesTequila) [ingredients addObject:@"tequila"]; [bartender mixCocktailIngredients: NSArrayToVariableList(ingredients)]; I started to come up with a variable-argument proxy that was supposed to be invoked like : [[bartender vaProxy] mixCocktailIngredients:ingredients]; and then used forwardInvocation to expand the NSArray... but then discovered that NSInvocation doesn't support variable arguments. _______________________________________________ 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