строка с форматом в качестве аргумента для метода (target-c) - PullRequest
4 голосов
/ 05 ноября 2010

[NSString stringWithFormat:]; может принимать несколько аргументов, даже если он объявлен как NSString, а не NSArray, и есть только одно двоеточие.

Как я могу получить это для моего собственного метода, который похож на замену NSLog, который пишетк текстовому полю, поэтому он часто используется, и я не хочу добавлять дополнительные квадратные скобки.

1 Ответ

2 голосов
/ 05 ноября 2010

Используйте многоточие после имени аргумента:

 (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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...