有什么方法可以问一个方法的名字吗?

And*_*ndy 14 iphone cocoa objective-c

我正在尝试调试我正在研究的iPhone应用程序,并且为各种源文件添加50个NSLog语句的想法给了我一些想法.

我想做的是写一对陈述,比方说

NSString *methodName = [self methodName];
NSLog(@"%@", methodName);
Run Code Online (Sandbox Code Playgroud)

我可以粘贴到我需要的每个方法中.有没有办法做到这一点?是否有一些Objective-C构造用于询问方法的名称?或者我必须以艰难的方式做到这一点?

Ken*_*Ken 22

试试NSLog(@"%s", __func__).这打印出一个漂亮的描述,比如-[MyView drawRect:].

这也适用于功能.这是一个编译器功能.

  • `__func__`是C99语言功能.它的表兄弟`__FUNCTION__`和`__PRETTY_FUNCTION__`是由GCC和其他编译器提供的语言扩展.我相信,这三者都是C++语言的扩展. (2认同)

Jas*_*oco 11

使用: NSLog("%@", NSStringFromSelector(_cmd));

_cmd是一个传递给每个方法的特殊变量,就像self引用该方法的选择器一样(基本上是方法的名称和签名).

  • @drawnonward:它实现为一个,是的,但它被定义为一个不透明的类型.苹果公司因为从你身下交换这样的东西而臭名昭着,所以无论它是如何实际实现的,都要记录下来. (9认同)
  • @drawnonward是技术上的,但是使用正确的转换函数仍然很好. (6认同)