Search code examples
objective-cc-preprocessorpredefined-macro

Is there a preprocessor macro that expands to the current selector?


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.


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));
    }