将 NSLog 添加到 Objective-C 中的所有方法

Prepend NSLog to all methods in Objective-C

是否可以配置一个class,使得每个方法调用:

"NSLog(@"%s", __PRETTY_FUNCTION__);" 

在执行之前?

例如,给定:

@implementation myClass

- (void) methodA {
    NSLog(@"Do something in method A");
}

- (void) methodB {
    NSLog(@"Do something in method B");
}

@end

[myClass methodA] 的输出将是:

"-[myClass methodA]"

"Do something in method A"

而不是:

"Do something in method A"

谢谢。

有很多聪明的方法可以做到这一点,但假设这只是为了调试您编写的 class 并且有太多的方法可以手动完成为什么不使用查找和替换呢?

注意:左大括号位于您显示的代码行的末尾,如果您更改样式,则需要更改正则表达式。

在 Xcode 中确保模式匹配打开:单击搜索输入框左侧的放大镜,select Edit Find Options...,然后将 Matching Style 设置为Regular Expression

现在在搜索字段中输入:

^-[^{]+\{

匹配:行首 (^)、破折号 (-)、不是大括号 ([^{]) 一次或多次 (+)、最后是大括号 (\{).

进行一些搜索以确保它与您的想法相符。然后在替换字段中键入:

[=11=] NSLog(@"%s", __PRETTY_FUNCTION__);

替换匹配 ([=20=]) 的内容,然后是您的 NSLog 调用。

逆向过程类似,留作练习。

HTH

我专门为这类事情创建了一个库。 在 GitHub 上查看 Xcode Logger