假设我有一个带有签名的方法:
+ (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) 的手册页上看到的示例。如果我做错了,请随意完全重写该方法。