格式为字符串的字符串(objective-c)

时间:2010-11-05 18:26:41

标签: objective-c macos nsstring

[NSString stringWithFormat:];可以使用多个参数,即使它被声明为NSString而不是NSArray,并且只有一个冒号。

我怎样才能拥有自己的方法,这就像是NSLog的替代品,它写入文本字段,因此经常使用,我不想继续添加更多的方括号。

1 个答案:

答案 0 :(得分:2)

在参数名称后面使用省略号:

 (NSNumber *) addValues:(int) count, ...;

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocDefiningClasses.html

然后,您需要使用va_listva_start来迭代所提供的参数:

- (NSNumber *) addValues:(int) count, ...
{
  va_list args;
  va_start(args, count);

  NSNumber *value;

  double retval;

  for( int i = 0; i < count; i++ )
  {
    value = va_arg(args, NSNumber *);

    retval += [value doubleValue];

  }

  va_end(args);
  return [NSNumber numberWithDouble:retval];
}

示例来自:http://numbergrinder.com/node/35

请注意,这是一个内置的C功能,不是Objective-C的一部分;这里有一个很好的va_arg用法解释:

http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html