【发布时间】:2012-02-16 12:26:20
【问题描述】:
我知道 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 替换为表示类名的硬编码字符串,但我想知道是否有更好的方法来做到这一点?
【问题讨论】:
标签: objective-c class inheritance logging