我知道 NSStringFromClass。
我的问题涉及以下情况:在继承树中的多个类中实现相同的方法,并且您想要调试有关它从哪个类执行的信息。
示例:
让我们有三个类: A-->B-->C ,继承如箭头所示。
如果它们每个都有一个方法 foo(),定义为:
-(void) foo
{
// Do some work particular to the class it is in.
.....
//Each method ends with the debugging statement:
NSLog("In foo of class:%$",NSClassFromString([self class]));
}
当B类的foo调用[super foo]时,就会出现问题。当[super foo](即A类)到达NSLog语句时,[self class]返回B类,而不是A类。
同样,如果 C 调用 [super foo],super 中的日志语句将记录类 C。
我想要做的是输出正在执行方法实现的类 - 因此如果 B 类调用 [super foo],那么 [A foo] 中的日志语句输出 A 类。
简单的方法是将 NSClassFromString 替换为代表类名的硬编码字符串,但我想知道是否有更好的方法来做到这一点?
最佳答案
您可以使用__PRETTY_FUNCTION__
来包含类和方法名称:
NSLog(@"Greetings from %s", __PRETTY_FUNCTION__);
我不相信有一个仅用于类名的编译时宏。
关于objective-c - 输出正在调用方法的类的名称的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8966818/