目前,我们正在定义一种扩展的日志(log)机制,以打印出日志(log)的类名和源行号.

#define NCLog(s, ...) NSLog(@"<%@:%d> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], \
    __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__])

例如,当我调用NCLog("Hello world");

<ApplicationDelegate:10>Hello world

现在我还想注销方法名,如:

<ApplicationDelegate:applicationDidFinishLaunching:10>Hello world

因此,当我们知道调用哪个方法时,这将使调试变得更容易.我知道我们也有Xcode调试器,但有时,我也想通过注销来进行调试.

推荐答案

print(__FUNCTION__) // Swift
NSLog(@"%@", NSStringFromSelector(_cmd)); // Objective-C

Swift 3 and above

print(#function)

C++相关问答推荐

VS代码输入需要多次

try 使用libusb控制音量时LIBUSB_WRIGHT_PIPE

命名信号量不会像进程之间同步中假设的那样工作

生成C代码时自动复制/生成' tmwtypes.h '依赖项

ISO_C_BINDING,从Fortran调用C

增加getaddrinfo返回的IP地址数量

当我运行/调试C程序时,Malloc()似乎正在将&q;r\r...&q;赋值给一个指针,我不确定为什么?

每个 struct 变量在C中都有自己的命名空间吗?

调用mProtection将堆栈上的内存设置为只读,直接导致程序SIGSEGV

在C语言中,是否可以使枚举数向后计数?

如何使解释器存储变量

什么是.c.h文件?

For循环中的变量行为不符合预期.[C17]

Boyer Moore算法的简单版本中的未定义行为

如何仅使用软件重新初始化STM32微控制器中的USB枚举?

变量的作用域是否在C中的循环未定义行为或实现定义行为的参数中初始化?

链接到底是如何工作的,我在这里到底做错了什么

当用C打印过多的';\n';时输出不正确

分配给静态变量和动态变量的位置之间有区别吗?

Ubuntu编译:C中的文件格式无法识别错误