1

Lets assume that I've a function in a class, which shows an alert:

- (void)showErrorWithTitle:(NSString *)title message:(NSString *)message
         cancelButtonTitle:(NSString *)cancelButtonTitle 
         otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;

- (void)showErrorWithTitle:(NSString *)title message:(NSString *)message
         cancelButtonTitle:(NSString *)cancelButtonTitle 
         otherButtonTitles:(NSString *)otherButtonTitles, ... {

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                    message:message
                                                   delegate:nil
                                          cancelButtonTitle:cancelButtonTitle
                                          otherButtonTitles:nil];

    va_list args;
    va_start(args, otherButtonTitles);
    for (NSString *arg = otherButtonTitles; arg != nil; arg = va_arg(args, NSString*))
    {
        [alert addButtonWithTitle:arg];
    }
    va_end(args);

    [alert show];
    [alert release];
}

I've a wrapper class, in which a method calls this method. My problem is how I have to implement this method?

This solution is not work:

- (void)showErrorWithTitle1:(NSString *)title message:(NSString *)message 
          cancelButtonTitle:(NSString *)cancelButtonTitle 
          otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;

- (void)showErrorWithTitle1:(NSString *)title message:(NSString *)message 
          cancelButtonTitle:(NSString *)cancelButtonTitle 
          otherButtonTitles:(NSString *)otherButtonTitles, ... {

    [[Someclass intance] showErrorWithTitle:title
                                    message:message
                          cancelButtonTitle:cancelButtonTitle
                          otherButtonTitles:otherButtonTitles, nil];
}

The invocation:

[self showErrorWithTitle1:@"Hello"
                 message:@"Example"
       cancelButtonTitle:@"No"
       otherButtonTitles:@"Yes, Maybe", nil];
madik
  • 21
  • 1
  • 6
  • 3
    Have a look at this http://stackoverflow.com/questions/2391780/how-to-pass-variable-arguments-to-another-method/2391883#2391883 – Till Jul 17 '12 at 07:51
  • See also http://stackoverflow.com/questions/2345196/objective-c-passing-around-nil-terminated-argument-lists?lq=1, http://stackoverflow.com/questions/150543/forward-an-invocation-of-a-variadic-function-in-c, and http://stackoverflow.com/questions/9562361/how-to-override-a-variadic-method-in-objective-c?lq=1 – jscs Jul 17 '12 at 16:54

0 Answers0