Я пытаюсь обобщить вызовы NSLog и избегать закомментирования вызовов после завершения отладки.
У меня есть:
#define USE_ADLog 0
#define USE_RPLog 0
#define USE_DLLog 1
void ConsoleADLog(NSString *message, ...);
void ConsoleRPLog(NSString *message, ...);
void ConsoleDLLog(NSString *message, ...);
и, например:
void ConsoleADLog(NSString *message, ...) {
#if (USE_ADLog)
va_list optionalArgs;
va_start(optionalArgs, message); // after the parm = message
va_end(optionalArgs);
NSLog(message, optionalArgs);
#endif
}
Пока все хорошо ... однако, как только я позвоню, например:
ConsoleDLLog(@"parm1 = %@, parm2 = %@", parm1, parm2);
, вызов которого находится во вторичном потоке, я бомблю.Я думал??что va_start, va_end были поточно-ориентированными.
... или проблема% @ ... Я знаю, что% f работает ???
Очевидно, нет !, так как мне их сделать?потокобезопасный ... обычный ole
NSLog(@"whatever %@", whateverParm)
работает, но не с функцией выше.
Спасибо,