objective-c - 如何打印出方法名称和行号并有条件地禁用 NSLog?

我正在做一个有关在 Xcode 中调试的演示文稿,并希望获得有关有效使用 NSLog 的更多信息。

特别是,我有两个问题:

  • 有没有办法轻松 NSLog 当前方法的名称/行号?
  • 有没有办法在编译发布代码之前轻松“禁用”所有 NSLog?

最佳答案

以下是一些我经常使用的关于 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 宏仅用于在设置了 DEBUG 变量时输出(项目的 cflags中的 -DDEBUG 用于调试配置)。

ALog 将始终输出文本(如常规 NSLog)。

输出(例如 ALog(@"Hello world") )将如下所示:

-[LibraryController awakeFromNib] [Line 364] Hello world

https://stackoverflow.com/questions/969130/

相关文章:

objective-c - 在objective-c/cocoa中抛出异常

ios - 文件是通用的(三个切片),但它不包含 iOS 上静态库的(n)ARMv7-s 切片错误,

objective-c - 类方法和实例方法有什么区别?

ios - 在 iOS 中获取当前设备语言?

ios - AVFoundation, captureStillImageAsynchronousl

ios - 如何隐藏 UINavigationBar 1px 底线

c - 是否可以使用 NSLog C 结构(如 CGRect 或 CGPoint)?

objective-c - 如何迭代 NSArray?

ios - @import 与 #import - iOS 7

objective-c - "__block"关键字是什么意思?