Динамическое получение имени текущего метода - PullRequest
17 голосов
/ 22 сентября 2009

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

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

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

где self - это класс, производный от NSObject?

Ответы [ 3 ]

35 голосов
/ 22 сентября 2009
NSLog(@"method name: %@", NSStringFromSelector(_cmd));

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

18 голосов
/ 02 июля 2012

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

NSLog(@"%s", __PRETTY_FUNCTION__);
1 голос
/ 25 апреля 2013

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

NSLog(@"%@", [NSString stringWithUTF8String:__func__])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...