Я использую CFMessagePortRef
для межпроцессного взаимодействия.для получения данных у меня есть метод обратного вызова
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
}
но в этом случае;если я открою два соединения, это изменит мой глобальный объект.
Может кто-нибудь помочь мне?