之前有人问过,但我不理解这个问题。我有自己的屏幕记录器,它有一个方法“追加”,它应该像NSLog一样工作,采用多个参数。
所以不要写这个:
int mynum = 19;
NSLog(@"This is a number %d",mynum);
我想这样做:
[Logger append:@"This is a number %d",mynum];
知道我怎么能这样做吗?
由于
答案 0 :(得分:6)
好的,这是艰难的方式。 : - )
使用stdarg.h宏创建附加参数的va_list副本,然后使用-initWithFormat:arguments:
方法创建一个字符串:
-(void) append:(NSString*)format, ... {
va_list args, args_copy;
va_start(args, format);
va_copy(args_copy, args);
va_end(args);
NSString *logString = [[NSString alloc] initWithFormat:format
arguments:args_copy];
// Append logString to your logger
va_end(args_copy);
[logString release];
}
这种方式为您提供了NSLog()本身的所有灵活性,支持任何数量和类型的参数。
答案 1 :(得分:2)
你想要一个省略号,例如
-(SomeResult*)append:(id)object,... {
id obj;
va_list argumentList;
va_start(argumentList, obj);
while (obj = va_arg(argumentList, id)) // Do something with obj
va_end(argumentList);
// ...
}
答案 2 :(得分:0)
[Logger append:[NSString stringWithFormat:@"This is a number %d",mynum]];