代码之家  ›  专栏  ›  技术社区  ›  Jonathan.

格式为方法参数的字符串(Objective-C)

  •  4
  • Jonathan.  · 技术社区  · 14 年前

    这个 [NSString stringWithFormat:]; 可以接受多个参数,即使它声明为nsstring而不是nsarray,并且只有一个冒号。

    我怎么能有自己的方法,它就像NSLAMP的一个替代,它被写入文本字段,所以它经常被使用,我不想继续增加更多的方括号。

    1 回复  |  直到 14 年前
        1
  •  2
  •   GendoIkari    14 年前

    在参数名后使用省略号:

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

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

    然后你需要使用 va_list va_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