간 프로세스 통신에 CFMessagePortRef
을 사용하고 있습니다. 데이터를 수신, 나는c 함수에서 코코아 (목표 c) 함수로 데이터를 가져 오는 방법
CFDataRef didReceiveDataFromOtherProcess(CFMessagePortRef local,SInt32 msgid,CFDataRef data,void *info)
지금 난 내 메인 컨트롤러로 수신 된 데이터를 보낼 방법 다시 전화해야합니다. didReceiveDataFromOtherProcess
에 주 컨트롤러 개체를 만들고 주 컨트롤러로 데이터를 보낼 수 있지만 일반 메시지 전달 모듈을 쓰고 싶습니다. 콜백 함수에서 인스턴스 변수에 액세스 할 수 없기 때문에 위임은이 경우 작동하지 않으므로 -(void)saveObject:(id)object
메서드를 정의하고 전역 변수에 주 컨트롤러의 개체를 저장합니다.
messagePassing *object = [[messagePassing alloc]init];
[object saveObject:self]; //in main controller
//in messagePassing
-(void)saveObject:(id)object
{
globalObject = object;
}
CFDataRef didReceiveDataFromOtherProcess(CFMessagePortRef local,SInt32 msgid,CFDataRef data,void *info)
{
//....
[globalObject didReceivedData:(id)data]; // sending to main controller
}
그러나이 경우; 두 개의 연결을 열면 전역 개체가 변경됩니다.
누구든지 나를 도와 줄 수 있습니까?