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使用后者。