如何使用objective-c获取变量参数中的参数类型

时间:2014-06-14 08:41:21

标签: objective-c variables arguments

我有一个带有变量参数的方法,参数可能是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];

那么如何实现这个方法呢?

1 个答案:

答案 0 :(得分:0)

你不能。 Varargs不保留类型信息。您将需要让第一个参数提供其余的类型信息(如printf那样),或者您必须使所有参数兼容类型。 (但是,可以使用不同对象类型的参数,因为所有对象都共享静态类型id。)