Objective-C 부분을 C++ 프로젝트에 섞고 있습니다 (크로스 플랫폼에 대해서는 논쟁하지 마십시오).
이제 코코아 환경에서 올바른 스레드 (즉, 메인 스레드)에서 일부 C++ 함수 또는 메소드를 호출하려고합니다.performSelector를 통해 포인터 또는 정수형을 전달하십시오
내 현재 접근법은 objective-c 인스턴스 (NSObject
에서 파생)에 함수 포인터를 전달하고 여기에 performSelector
/performSelectorOnMainThread
을 수행합니다.
그러나 performSelector
은 객체를 인수로 기대하기 때문에 일반적으로 어떻게 처리합니까?
예 :
테스트는 다음과 같이 선언typedef void(*FnPtr)(void*);
FnPtr fn;
[someInstance performSelector:@selector(test:) withObject:fn];
... :
- (void)test:(FnPtr)fn;
이 더 나은 방법이 있는지, 그래서 이번 주 목적-C와 난 단지 시작 것을 추가해야 나는 그것에 대해 듣게되어 기쁘다.
프로젝트가 브라우저 플러그인 (현재 Mac에서만 Safari를 대상으로하기 때문에)이므로 주 루프 나 응용 프로그램 개체에 액세스 할 수 없습니다.
중복 : http://stackoverflow.com/questions/1185549/passing-a-native-pointer-toformformlectoronmontthreads-withobject-argument –