블록에 매개 변수 배열을 동적으로 적용하는 방법이 필요합니다. 블록에는 모든 유형의 매개 변수가 여러 개있을 수 있습니다.블록에 매개 변수 배열을 동적으로 적용하기
배열의 매개 변수 개수와 유형이 일치한다는 것을 알고 있습니다.
나는 블록을 CTBlockLiteral
으로 주조하는 것을 이미 보았습니다. 이렇게하면 invoke
메소드에 액세스 할 수 있습니다.
(void(^)(NSString* arg0,NSString* arg1))
의 블록은 blockRef->invoke(nil, @"foo", @"bar");
과 같이 호출 할 수 있습니다.
컴파일 타임에 유형과 유형을 알 수없는 매개 변수의 수를 어떻게 일반화 할 수 있습니까?
편집 : 명확히 말하면, 블록을 변경하여 varargs, 배열 등을 허용하지 않습니다. 이 블록은 원하는 서명을 가질 수 있으며 배열에 매개 변수가 있습니다. 이러한 매개 변수를 블록에 어떻게 전달할 수 있습니까? Javascript의 apply
함수와 비슷한 것을 원하는 것처럼 느껴집니다.
var args? https://gist.github.com/JacobOscarson/2783763 –
@GuillaumeAlgis 아니요, 블록은 이런 일이 일어난 것을 기쁜 마음으로 알아야합니다. – funkybro
Objective-C의 블록에 Javascript의'apply' 함수를 어떻게 재현합니까?라는 질문을하는 것 같습니다. " 블록은 이에 적합하지 않습니다. 아마도'NSInvocation', 당신이하려는 일에 달려 있습니다. 해결하고자하는 더 광범위한 비즈니스 문제를 기술 할 수 있습니까? – Rob