시나리오는 나중의 사용을 위해 외부 @selector를 저장하는 객체가있는 곳에서 자체적으로 나타납니다. 의도적으로 두 종류의 선택기를 추가 할 수 있기를 바랍니다. 매개 변수가없는 단순한 매개 변수는 [object add:@selector(doSomething)]
과 같으며 매개 변수가 하나 인 복잡한 매개 변수는 [object add:@selector(doSomething:)]
(콜론 사용)과 같습니다. 선택기가 변수 SEL mySelector
에 저장되어 있다고 가정 해 보겠습니다.@selector에 매개 변수가 필요한지 확인하는 방법은 무엇입니까?
실행시에는 [anotherObject performSelector:mySelector]
또는 [anotherObject performSelector:mySelector withObject:userInfo]]
사이를 결정해야합니다.
이 결정을 구현 한 방식은 성능이 추가 매개 변수의 유무에 관계없이 중복 저장하는 BOOL 플래그를 제공하는 것입니다. 그러나 docs에서 이것을 찾을 수는 없지만, 나는 또한 selector에 -(BOOL)needsParameter
과 같은 것을 물어볼 수 있어야한다는 생각이 들었다. 예를 들어, UIGestureRecognizer의 addTarget : action : 어떻게 든이 구분을 자동으로 수행합니다.
누군가 올바른 방향으로 나를 가리킬 수 있습니까?
http://stackoverflow.com/questions/3571739/how-to-get-the-arity-of-a-method 가능한 복제본 – Yuras
@Yuras : nice find – BoltClock
매우 많은 속임수! 나는 또한 오늘 새로운 단어를 배웠습니다. 그것은'arity'입니다 :) Thank Yuras! – epologee