我正在使用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
}
但在这种情况下,如果我打开两个连接,它会改变我的全局对象。
任何人都可以请帮我吗?