将 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。
是否可以配置一个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。