シナリオは、後で使用するために外側の@セレクタを格納するオブジェクトがある場所で表示されます。設計上、2種類のセレクタを追加できるようにしたいと考えています。単純なものは、[object add:@selector(doSomething)]
のようなパラメータなしで、[object add:@selector(doSomething:)]
(コロンを気にしてください)のような1つのパラメータでより複雑なものです。セレクタが変数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
@Yuras:nice find – BoltClock
非常に重複しています!私も今日、新しい言葉を学んだ、それは 'arity'です:)ありがとう! – epologee