Динамическое извлечение имени текущего метода

Я хотел бы иметь возможность отправлять сообщения трассировки текущего имени класса и имени метода для всех классов в моем проекте.

Есть ли способ получить имя текущего метода во время выполнения, аналогично:

NSLog(@"classname: %@", [self className]);

где self - класс, полученный из NSObject?

Ответы

Ответ 1

NSLog(@"method name: %@", NSStringFromSelector(_cmd));

_cmd - скрытый аргумент (например, self), который получают все методы Objective-C. Его значение - это селектор, который использовался для вызова метода.

Ответ 2

Редакция: Я думаю, что этот метод более общий... проверьте его.

NSLog(@"%s", __PRETTY_FUNCTION__);

Ответ 3

Это также работает:

NSLog(@"%@", [NSString stringWithUTF8String:__func__])