Каждый вызов метода также проходит два скрытых аргумента: идентификатор
с именем self
и SEL
с именем _cmd
. Вы можете использовать NSStringFromSelector
для преобразования селектора метода в NSString:
NSStringFromSelector(_cmd);
Используйте __ func __
. Это строка C, поэтому для NSString используйте [NSString stringWithUTF8String: __ func __]
.
У этого есть два преимущества перед _cmd
:
__ func __
требуется для существования C99.) "- [MyView drawRect:]"
. В соответствии с ответом Мартина, но вы также можете прочитать информацию о Objective C 2.0 Runtime .
Подобная игра на пустяках, как правило, приводит к трудностям однако управлять кодом.
В качестве примера полезности такого рода вещей: Это шаблон для сообщений NSLog, который я использую:
NSLog(@"%@ %@: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), @"A Message");
Это выводит класс и метод на консоль при регистрации.