【发布时间】:2010-11-05 18:26:41
【问题描述】:
[NSString stringWithFormat:]; 可以接受多个参数,即使它被声明为 NSString 而不是 NSArray 并且只有一个冒号。
我怎样才能为我自己的方法使用它,这就像 NSLog 的替代品,它写入一个文本字段,所以它经常被使用,我不想继续添加更多的方括号。
【问题讨论】:
标签: objective-c macos nsstring
[NSString stringWithFormat:]; 可以接受多个参数,即使它被声明为 NSString 而不是 NSArray 并且只有一个冒号。
我怎样才能为我自己的方法使用它,这就像 NSLog 的替代品,它写入一个文本字段,所以它经常被使用,我不想继续添加更多的方括号。
【问题讨论】:
标签: objective-c macos nsstring
在参数名称后使用省略号:
(NSNumber *) addValues:(int) count, ...;
然后您需要使用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
【讨论】:
titleWithFormat:的方法