我有一个带有变量参数的方法,参数可能是int,NSString或其他类。我想要处理每个参数依赖于一个类型。所以我试图得到每个参数的类型,但我失败了。 这是我的代码:
.h文件
-(void)handleArgs:(NSString *)firstArg, ...;
.m文件
-(void)handleArgs:(NSString *)firstArg, ...
{
va_list argList;
va_start(argList, firstArg);
// get each object and get its type and handle it by type
va_end(argList);
}
我会这样称呼它:
NSArray *list = [NSArray alloc] initWithObjects:@"item1", @"item2", @"item3", nil];
[self handleArgs:@"test", 100, @"arg2", list, nil];
那么如何实现这个方法呢?
答案 0 :(得分:0)
你不能。 Varargs不保留类型信息。您将需要让第一个参数提供其余的类型信息(如printf那样),或者您必须使所有参数兼容类型。 (但是,可以使用不同对象类型的参数,因为所有对象都共享静态类型id
。)