【问题标题】:how to get the type of argument in variable argument using objective-c如何使用objective-c获取变量参数中的参数类型
【发布时间】:2014-06-14 08:41:21
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c variables arguments


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多