如何打印出方法名和行号,并有条件禁用NSlog?

如何打印出方法名和行号,并有条件禁用NSlog?

我正在做一个关于Xcode调试的演示,希望获得更多关于如何高效使用NSLog的信息。

特别是,我有两个问题:

  • 是否有一种方法可以轻松地记录当前方法的名称/行号?
  • 在编译发布代码之前,是否有一种方法可以轻松地“禁用”所有NSLogs?


天涯尽头无女友
浏览 474回答 3
3回答

慕码人2483693

下面是关于NSLog的一些有用的宏,我经常使用:#ifdef DEBUG#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)#else#   define DLog(...)#endif// ALog always displays output regardless of the DEBUG setting#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)DLog宏仅用于在设置调试变量时输出(项目的C标志中用于调试确认的-DDEBUG)。Alog将始终输出文本(如常规NSlog)。输出(例如Alog(@“HelloWorld”)如下所示:-[LibraryController awakeFromNib] [Line 364] Hello world

慕尼黑的夜晚无繁华

下面是关于NSLog的一些有用的宏,我经常使用:#ifdef DEBUG#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)#else#   define DLog(...)#endif// ALog always displays output regardless of the DEBUG setting#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)DLog宏仅用于在设置调试变量时输出(项目的C标志中用于调试确认的-DDEBUG)。Alog将始终输出文本(如常规NSlog)。输出(例如Alog(@“HelloWorld”)如下所示:-[LibraryController awakeFromNib] [Line 364] Hello world

呼唤远方

NSLog(@"%s %d %s %s", __FILE__, __LINE__, __PRETTY_FUNCTION__, __FUNCTION__);输出文件名、行号和函数名:/proj/cocoa/cdcli/cdcli.m 121 managedObjectContext managedObjectContext__FUNCTION__在C+中显示损坏的名称__PRETTY_FUNCTION__显示了很好的功能名称,在可可,他们看起来是一样的。我不知道禁用NSlog的正确方法是什么,我做到了:#define NSLog而且没有出现日志输出,但是我不知道这是否有任何副作用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS