在objective-c中我可以访问方法中的调用classname / methodname吗?
背景:
我目前在我的一些记录方法中添加以下行:
NSLog(@"<%@:%@:%d>", NSStringFromClass([self class]), NSStringFromSelector(_cmd), __LINE__);
最好还包括调用该方法的代码的类名和方法名(位置)。
这可能吗?代码是什么?
感谢
答案 0 :(得分:3)
没有实际的方法可以做到这一点(因此Cocoa中的所有方法都带有sender
个参数)。甚至没有保证 这样的东西 - 它可以从一个普通的,self
- 更少的函数调用,或者它可以从一个方法调用内联到它的调用方法,或者我们可以通过跳转到达那一行,或者.......
答案 1 :(得分:1)
如果您只是在调试可执行文件的上下文中执行此操作,请考虑尝试使用GDB Backtrace函数:
http://www.gnu.org/software/libc/manual/html_node/Backtraces.html
不确定最终会看起来像Objective-C,但如果你回到链上足够长的时间,你应该找到一些调用消息的东西......
或尝试阅读本文,看看它是否有帮助:
Why does backtrace not contain Objective-C symbols regardless of -rdynamic?
答案 2 :(得分:1)
http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog
很小的谷歌搜索可以走得很远:)我使用 PRETTY_FUNCTION 和DLog。