該場景呈現自己,我有一個對象,存儲一個外部@選擇器供以後使用。按照設計,我希望能夠添加兩種選擇器。簡單的一個,沒有參數,比如[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