Существует вариант NSLog
, который принимает va_list
с именем NSLogv
:
- (void) log:(NSString *)text, ... {
va_list args;
va_start(args, text);
NSLogv(text, args);
va_end(args);
}
Единственный способ пересылки фактического ...
(не va_list
) - использовать макрос.Например:
#define MyLog(f, ...) { \
NSLog(f, ##__VA_ARGS__); \
[someObject doSomething:f, ##__VA_ARGS__]; \
}
Однако это следует использовать очень экономно, поскольку макросы могут сделать код действительно запутанным.