gpt4 book ai didi

cocoa - 自定义 NSLog,使其显示更少的信息

转载 作者:行者123 更新时间:2023-12-03 17:06:48 25 4
gpt4 key购买 nike

默认情况下,NSLog 在请求的输出之前输出一个长字符串,

例如:

NSLog(@"Log message");

输出到控制台:

2011-04-15 11:23:01.692 MyAppName[23160:903] Log message

我知道我可以将文件名和行号添加到日志中,但是如何删除消息之前出现的所有日期、时间和应用程序名称?

我发现它确实让 Xcode 中的控制台变得困惑,让我更难找到我想要的信息。

最佳答案

这绝对是我在新项目中做的第一件事。 NSLog(…)口腔腹泻。这是一个基本的宏,可以让您获得一些和平与安静..并记录基本对象,而无需烦人的 NSLog(@"%@", xYz); 语法(而不是你只需NSLog(xYz);)。

#define NSLog(fmt...) NSShutUp(__PRETTY_FUNCTION__,fmt)
#define UTF8FMT(fmt,argL) \
[NSString.alloc initWithFormat:fmt arguments:argL].UTF8String

void NSShutUp(const char*func, id fmt, ...) {
if (![fmt isKindOfClass:NSString.class])
// it's not a string (aka. the formatter), so print it)
fprintf (stderr, "%s: %s\n", func,
[[NSString stringWithFormat:@"%@",fmt,nil]UTF8String]);
else { va_list argList; va_start (argList, fmt);
fprintf (stderr, "%s: %s\n", func, UTF8FMT(fmt,argList));
va_end (argList);
} }

/* SAMPLE RUN */

int main (void) { NSString *a; NSNumber *b; NSArray *c;
NSLog(a = @"Ahh, silence." );
NSLog(b = @(M_PI) );
NSLog(c = @[@"Arrays, baby!"] );
// Old syntax still works.
NSLog(@"%@ * %@ * %@",a,b,c);
return 0;

}

输出

int main(): Ahh, silence.
int main(): 3.141592653589793
int main(): (
"Arrays, baby!"
)
int main(): Ahh, silence. * 3.141592653589793 * (
"Arrays, baby!"
)

关于cocoa - 自定义 NSLog,使其显示更少的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5673659/

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