Question

Possible Duplicate:
Dynamically retrieving current method's name
Obj-C introspection: How can a method reference it's own selector?

This applies to Objective-C, is there a preprocessor macro or something to get the SEL value of the current selector? Specifically I'm looking for something like:

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

it's kinda like the __FILE__ macro but this to obtain the current selector. Pretty useful to pass it to others while not worrying to update it if the selector name is changed.

Was it helpful?

Solution

Every method has two implicit parameters, self which is an id (the receiver) and a SEL called _cmd, which is probably what you want.

Note that this has nothing to do with preprocessor or anything before compile-time, _cmd is not a macro, it's an argument.

-(void) someSelector
{
    NSLog(@"I'm in selector %@",NSStringFromSelector(_cmd));
}

OTHER TIPS

What sidyll said should answer your question. Just wanted to add if you just need it for logging you can also use the usual C keywords, e.g.

NSLog( @"%s" , __PRETTY_FUNCTION__ );
NSLog( @"%s" , _cmd );

_cmd will get you the current selector(only available in objective-c)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top