2011-10-21 3 views
0

는 어떻게 든 클래스 멤버 함수 C++에 performSelector를 호출 할 수 있습니까?performSelector 클래스 메소드 C++에?

나는 performSelector 전화를 받게됩니다 더미 objc 클래스를 만드는 생각하고,이 더미 클래스는 원하는 C++ 멤버 함수를 호출.

그러나 더 좋은 방법이 있습니까?

답변

1

객관적인 c 런타임을 필요로하는 내부적 인 차이 (objc_msgSend()를 조사) 때문에 C++ 클래스 인스턴스에서 객관적인 c 메시지를 호출 할 수 없습니다. 당신은 함수 포인터로 찾거나 bind 또는 function 같은 boost C++ 라이브러리 수 있습니다. 양자 택일로, 당신은, 당신이 말한대로, C++ 메소드 호출로 OBJ의 C 메시지를 전달하는 래퍼를 만들 수 있습니다.

+0

boost/bind는 특정 스레드에서 selector를 수행하는 데 사용할 수 있습니까? (주 스레드) – eugene

+0

boost :: bind는 boost :: thread http://blog.emptycrate.com/과 함께 작동 할 수 있습니다. 노드/277. 또한, performSelectorOnThread 유형의 메시지가 객체에 전송 될 수 있으며, C++ 코드는 그 스레드에서 실행됩니다. – jbat100

0

(난 그냥이기 때문에 나사의 바로 메소드를 호출하지 않으려는 이유가)이 작업을 수행하는 좋은 방법은 없습니다. Objective-C 더미 수신기를 만들고 거기에서 C++ 클래스를 호출합니다. C++ 클래스에서 UI 이벤트를 수신하기 위해 동일한 작업을 수행했습니다.