Search code examples
objective-cmethodsselectorintrospection

Obj-C introspection: How can a method reference its own selector?


I wish to write a macro, to be used within any method, which references the method's selector. I do not wish to pass the literal name of the method. For example:

#define RERUN [self performSelector:{something} withObject:nil afterDelay: 0.0]

where the "{something}" in the above would resolve to the selector of whatever method the macro was used in.

Is there some way to do this?


Solution

  • _cmd represents the selector of the current method -- it is a hidden argument (like self).

    if you never need arguments, or nil is suitable for your purpose - all you need to do is write:

    #define RERUN [self performSelector:_cmd]