是否应该在生产代码上使用NSLog()?我在这个网站上被告知了几次,但我想确保确实如此。我希望能够在我的代码中撒上NSLog函数调用,并且Xcode / gcc会在构建我的Release / Distribution版本时自动删除这些调用。我应该避免使用它吗?如果是这样,有经验的Objective-C程序员之间最常见的选择是什么?
3 回答
慕斯709654
TA贡献1840条经验 获得超5个赞
预处理器宏确实非常适合调试。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对象进行交互来构建更复杂的日志系统。例如,您可以拥有一个写入其自己的日志文件(或数据库)的日志记录类,并包含您可以在运行时设置的“priority”参数,因此调试消息不会显示在您的发行版本中,但错误消息是(如果你这样做,你可以使DebugLog(),WarningLog()等。
哦,请记住,#define DEBUG_MODE
可以在应用程序的不同位置重复使用。例如,在我的应用程序中,我使用它来禁用许可证密钥检查,并且只允许应用程序在特定日期之前运行。这让我可以轻松地分发一个时间有限,功能齐全的beta版本。
- 3 回答
- 0 关注
- 443 浏览
添加回答
举报
0/150
提交
取消