gpt4 book ai didi

iphone - 真的不应该在生产代码上使用 NSLog() 吗?

转载 作者:IT老高 更新时间:2023-10-28 12:17:19 26 4
gpt4 key购买 nike

我在这个网站上被告知过几次,但我想确保情况确实如此。

我希望能够在我的代码中散布 NSLog 函数调用,并且 Xcode/gcc 会在构建我的发布/分发版本时自动删除这些调用。

我应该避免使用这个吗?如果是这样,有经验的 Objective-C 程序员之间最常见的选择是什么?

最佳答案

预处理器宏确实非常适合调试。 NSLog() 没有任何问题,但是很容易定义自己的日志功能,并具有更好的功能。这是我使用的一个,它包含文件名和行号,以便更容易跟踪日志语句。

#define DEBUG_MODE

#ifdef DEBUG_MODE
#define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... )
#endif

我发现将整个语句放在前缀标题中比放在它自己的文件中更容易。如果你愿意,你可以通过让 DebugLog 与普通的 Objective-C 对象交互来构建一个更复杂的日志系统。例如,您可以有一个日志记录类,它写入自己的日志文件(或数据库),并包含一个您可以在运行时设置的“优先级”参数,因此调试消息不会显示在您的发布版本中,但错误消息是 (如果你这样做了,你可以制作 DebugLog()、WarningLog() 等等)。

哦,请记住 #define DEBUG_MODE 可以在应用程序的不同位置重复使用。例如,在我的应用程序中,我使用它来禁用许可证 key 检查,并且只允许应用程序在某个日期之前运行。这让我能够以最小的努力分发一个时间有限的、功能齐全的测试版副本。

关于iphone - 真的不应该在生产代码上使用 NSLog() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/300673/

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