Могу ли я обернуть NSLog в блок, который принимает переменное количество аргументов? - PullRequest
3 голосов
/ 31 августа 2011

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

typedef void (^Logger)(NSString *fmt, ...);
@property(copy) Logger logger;
logger(@"Foo, %@.", self);

Но я не знаю, как передать список аргументов переменной в NSLog:

const Logger SimpleLogger = ^(NSString *fmt, ...) {
    // what goes in here?
};

1 Ответ

5 голосов
/ 31 августа 2011

Ах, я совсем пропустил NSLogv:

const Logger SimpleLogger = ^(NSString *fmt, ...) {
    va_list arglist;
    va_start(arglist, fmt);
    NSLogv(fmt, arglist);
    va_end(arglist);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...