Obj-C内省:方法如何引用自己的选择器?

Mic*_*l57 3 methods introspection objective-c selector

我希望编写一个宏,在任何引用方法选择器的方法中使用.我不希望传递方法的文字名称.例如:

#define RERUN [self performSelector:{something} withObject:nil afterDelay: 0.0]
Run Code Online (Sandbox Code Playgroud)

上面的"{something}"将解析为使用宏的方法的选择器.

有办法做到这一点吗?

jus*_*tin 5

_cmd表示当前方法的选择器 - 它是一个隐藏的参数(如self).

如果你从不需要论证,或者nil适合你的目的 - 你需要做的就是写:

#define RERUN [self performSelector:_cmd]
Run Code Online (Sandbox Code Playgroud)

  • 您的RERUN与原始版本略有不同 - 您的版本将在当前调用堆栈中发生,原始版本将在当前运行循环上调度调用但不会立即调用任何内容. (3认同)