gpt4 book ai didi

iphone - 泛化对 NSLog 的调用

转载 作者:行者123 更新时间:2023-12-03 18:00:40 26 4
gpt4 key购买 nike

我致力于推广 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)

可以工作,但不是上面的功能。

谢谢

最佳答案

这就是为什么许多可变参数函数包含接受 va_list 的变体。

参见NSLogv

关于iphone - 泛化对 NSLog 的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com