该场景呈现自己,我有一个对象,存储一个外部@选择器供以后使用。按照设计,我希望能够添加两种选择器。简单的一个,没有参数,比如[object add:@selector(doSomething)]
,更复杂的是一个参数,比如[object add:@selector(doSomething:)]
(介意冒号)。假设选择器存储在变量SEL mySelector
中。如何确定@ selector是否需要参数?
在执行中,我需要在[anotherObject performSelector:mySelector]
或[anotherObject performSelector:mySelector withObject:userInfo]]
之间做出决定。
我执行此决定的方式是通过提供一个BOOL标志来冗余存储性能是否应该带或不带额外参数。然而,虽然我无法在文档中找到它,但我有这样的感觉,我应该也可以询问选择器,如-(BOOL)needsParameter
。我知道,例如,UIGestureRecognizer的addTarget:action:以某种方式自动进行这种区分。
难道有人指着我正确的方向吗?
可能的重复http://stackoverflow.com/questions/3571739/how-to-get-the-arity-of-a-method – Yuras 2011-01-23 13:11:08
@Yuras:不错的发现 – BoltClock 2011-01-23 13:13:28