Мне известно о 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]));
}
Проблема возникает, когда foo класса B вызывает [super foo].Когда [super foo] (т. Е. Class A) достигает оператора NSLog, [self class] возвращает класс B, а не A.
Аналогично, если C вызвал [super foo], оператор log в super запишет классC.
То, что я хочу сделать, это вывести класс, реализация метода которого выполняется - поэтому, если класс B вызывает [super foo], то оператор log в [A foo] выводит класс A.
Простой способ - заменить NSClassFromString жестко закодированной строкой, представляющей имя класса, но мне было интересно, есть ли лучший способ сделать это?