Ios 为Objective-C中的所有方法预先添加NSLog

Ios 为Objective-C中的所有方法预先添加NSLog,ios,objective-c,nslog,Ios,Objective C,Nslog,是否可以配置一个类,以便每个方法调用: "NSLog(@"%s", __PRETTY_FUNCTION__);" 在执行之前 例如,假设: @implementation myClass - (void) methodA { NSLog(@"Do something in method A"); } - (void) methodB { NSLog(@"Do something in method B&

是否可以配置一个类,以便每个方法调用:

"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方法A]”

“用方法A做点什么”

而不是:

“用方法A做点什么”


谢谢。

有很多聪明的方法可以做到这一点,但是假设这只是为了调试您编写的类,并且有太多的方法无法手动完成,为什么不使用Find&Replace呢

注意:您的大括号位于代码中的行尾,您将显示以下用法,如果更改样式,则需要更改正则表达式

在Xcode中,确保模式匹配处于打开状态:单击搜索输入框左侧的放大镜,选择
编辑查找选项…
,然后将
匹配样式设置为
正则表达式

现在在搜索字段中输入:

^-[^{]+\{
匹配:行的开头(
^
),短划线(
-
),不是大括号(
[^{]
)一次或多次(
+
),最后是大括号(
\{

进行一些搜索以确保它与您认为的匹配。然后在“替换”字段中键入:

\0 NSLog(@"%s", __PRETTY_FUNCTION__);
它将替换匹配的内容(
\0
),然后是您的
NSLog
调用

相反的过程也可以类似地完成,这只是一个练习


HTH

我专门为这类东西创建了一个库。
查看GitHub。

我在谷歌上搜索了“override objc_msgsend”并发现:似乎这是可能的,但只适用于汇编。为什么不使用Thank@CRD。当我将“\0”替换为“$0”时,这对我来说很有效。显然,Xcode 5使用前者,而Xcode 6使用后者。