3

可能重复:
动态检索当前方法的名称
Obj-C 内省:方法如何引用它自己的选择器?

这适用于 Objective-C,是否有预处理宏或其他东西来获取当前选择器的 SEL 值?具体来说,我正在寻找类似的东西:

-(void) someSelector
{
    SEL mySelector = __CURRENT_SELECTOR__;
    NSLog(@"I'm in selector %@",NSStringFromSelector(mySelector));
}

它有点像__FILE__宏,但这是为了获取当前选择器。将它传递给其他人非常有用,而不必担心如果选择器名称发生更改则对其进行更新。

4

3 回答 3

9

每个方法都有两个隐式参数,self一个id(接收者)和一个SEL被调用的_cmd,这可能是你想要的。

请注意,这与预处理器或编译时之前的任何内容无关,_cmd不是宏,而是参数。

-(void) someSelector
{
    NSLog(@"I'm in selector %@",NSStringFromSelector(_cmd));
}
于 2012-01-21T15:13:53.783 回答
4

西迪尔所说的应该回答你的问题。只是想添加,如果你只需要它来记录你也可以使用通常的 C 关键字,例如

NSLog( @"%s" , __PRETTY_FUNCTION__ );
于 2012-01-21T17:56:25.787 回答
0
NSLog( @"%s" , _cmd );

_cmd 将为您提供当前选择器(仅在 Objective-c 中可用)

于 2012-01-21T15:13:55.607 回答