アラートを表示するクラスに関数があると仮定しましょう。
- (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];
}
メソッドがこのメソッドを呼び出すラッパークラスがあります。私の問題は、このメソッドをどのように実装する必要があるかです。
この解決策は機能しません:
- (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];
}
呼び出し:
[self showErrorWithTitle1:@"Hello"
message:@"Example"
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes, Maybe", nil];