그래서 임의의 변수를 가진 임의의 객체에 대해 임의의 메소드를 호출 할 수 있어야하는 곳에서 obj-c (나는 차라리 무엇을 말하지 않겠습니까)에서 작업하고 있습니다. 처음 두 가지는 충분히 쉽지만 가변 인수를 수행하는 방법은 확실하지 않습니다. 명확하게 말하자면, 가변 인수를받는 함수/메소드에 관한 것이 아니라 이이 아닌 것입니다. objc_msgSendv (및 해당 변형) objective-c 런타임 및 NSInvocation에서 두 가지 방법을 발견했습니다. NSInvocation은 '모범 사례'와 같이 더 쉽고 더 많이 보이지만 objc_msgSendv는 더 빨리 처리해야하는 것처럼 들리지만 매번 완전히 다른 메시지를 사용하여 여러 번 반복해야합니다. 어느 것을 선택해야합니까? 좋은 이유로 objc_msgSendv 금기가 있습니까? (docs는 objc_msgsend 함수를 호출하지 않는다고 말합니다.)더 나은 방법 : objc_msgSendv 또는 NSInvocation?
P. 나는 모든 논증의 유형을 알고 있고 그들 모두가 이드가 아님
또한 (주요 질문의 일부가 아님) objc_msgSendv에서 super에 메시지를 보낼 방법이없는 것처럼 보입니다. 그것도 NSInvocation에서 그렇게 할 수있는 방법이 아닌 것 같습니다. 그래서 그것에 대한 도움도 될 것입니다.
감사합니다. obj_msgSendv가 가치 하락되었다는 것을 알지 못했습니다. 내가하고있는 일은 약간 인위적이지만 근본적으로 나는 iPad에서 코드를 작성할 수 없다는 점에서 약간의 누그러 뜨 렸습니다. 그래서 내가하고있는 일은 obj-c의 하위 집합에 대한 인터프리터를 작성하는 몇 가지 방법입니다. 따라서 앱 스토어를 공개하지는 않지만 기술적으로 Apple의 제한 사항을 위반하지는 않습니다. objective-c 런타임이 매우 동적이어서 (예를 들어, 문자열만으로 코코아/uikit을 호출 할 수 있기 때문에)이 점을 고려하는 것조차하고 있습니다. 아, 그리고 SDK에 가입하지 않았으므로 NDA를받을 수는 없습니다.) –
Ahh ... 확인. 그러면 ffi는 iPhone 플랫폼에서 사용할 수 없습니다. iPad는 NDA에 속해 있습니다. 여기서 논의 할 수는 없습니다. 재미있는 프로젝트처럼 들립니다. 나는 너에게 행운을 빌어. 당신은 F-Script Anywhere를 보길 원할 것입니다, btw. – bbum