署名付きのメソッドがあるとします。
+ (NSString *) myFormattedString:(NSString *)format, ...;
そして、選択した文字列を先頭に追加したい (例: @"Foo: ")。[myString initWithFormat:arguments:] を使用するのが最善の方法だと思いますが、このメソッドをどのように実装しますか?
次のことを試みましたが、コメントで指定されているように警告が表示されます。
+ (NSString *) myFormattedString:(NSString *)format, ... {
char *buffer;
[format getCString:buffer maxLength:[format length] encoding:NSASCIIStringEncoding];
va_list args;
va_start(args, buffer); // WARNING: second parameter of 'va_start' not last named argument
NSString *str = [[NSString alloc] initWithFormat:format arguments:args];
[str autorelease];
return [NSString stringWithFormat:@"Foo: %@.", str];
}
va_start() が (char *) を取り込むことができると想定している理由は、STDARG(3) のマニュアル ページで見た例によるものです。完全に間違っている場合は、メソッドを完全に書き直してください。