可能重复:
Dynamically retrieving current method's name
Obj-C introspection: How can a method reference it's own selector?
这适用于Objective-C,是否有预处理器宏或某些东西来获取当前选择器的SEL值?具体来说,我正在寻找类似的东西:
-(void) someSelector
{
SEL mySelector = __CURRENT_SELECTOR__;
NSLog(@"I'm in selector %@",NSStringFromSelector(mySelector));
}
它有点像__FILE__
宏但这是获取当前选择器。如果更改选择器名称,将其传递给其他人并不担心更新它非常有用。
答案 0 :(得分:9)
每个方法都有两个隐式参数,self
是id
(接收者)和SEL
,称为_cmd
,这可能就是你想要的。
请注意,这与预编译器或编译时之前的任何内容无关,_cmd
不是宏,它是一个参数。
-(void) someSelector
{
NSLog(@"I'm in selector %@",NSStringFromSelector(_cmd));
}
答案 1 :(得分:4)
西迪尔说的应该回答你的问题。只是想添加,如果您只需要它进行日志记录,您也可以使用通常的C关键字,例如
NSLog( @"%s" , __PRETTY_FUNCTION__ );
答案 2 :(得分:0)
NSLog( @"%s" , _cmd );
_cmd将为您提供当前选择器(仅在objective-c中可用)