2012-07-24 3 views
2

vargs 매개 변수 목록을 포함하는 메서드에서 선택기를 호출하고 싶습니다. 선택기에 매개 변수 수의 변수를 동적으로 제공하는 방법이 있습니까?가변 인수를 선택기에 전달

+0

나는 당신이 의미하는 것을 정확히 이해하는 데 어려움을 겪고 있습니다. 'va_list' 매개 변수를 가진 메소드 안에서, 당신은 a)'va_list'를 취하는 다른 메소드를 호출하고 싶습니까? 2)'performSelector :'또는 유사한 것을'va_list'를 취하는 다른 메소드의 선택 자로 사용합니까? 4)? 'NSInvocation'은 아마 답 일지 모르겠지만 좀 더 명확한 질문으로 좀더 상세한 해결책을 제공하는 것이 더 쉬울 것입니다. –

+0

나는 선택자를 수행하기 위해 이미 가변 인자 목록을 전달할 수 있다고 생각했지만, 그렇게 할 수는 없다고 생각합니다. 단 3 개 옵션 (0 개 매개 변수, 1 개 매개 변수 또는 2 개 매개 변수)이있는 것 같습니다. 이 경우, 가장 현명한 선택은 두 가지 오버로드 된 메소드를 제공 한 다음 다른 경우에 대해 사전을 사용하는 것입니다. – Brian

+0

아마도'objc_msgSend()'를 찾고 계십니까? –

답변

2

불행히도 performSelector을 사용하는 경우 여러 매개 변수를 전달하는 유일한 방법은 NSArray 또는 NSDictionary 등을 전달하는 것입니다. 그런 다음 새 매개 변수 저장 객체를 허용하도록 수신 메소드의 생성자를 변경해야합니다.

또는 NSInvocation을 사용할 수 있습니다.

+2

"performSelector에 1 또는 2 매개 변수를 전달하면 누구에게나 충분해야합니다."-Steve Jobs, 1996 – Brian

1

매개 변수 개수를 지정할 수있는 NSMutableDictionary를 전달할 수 있습니다.

관련 문제