【发布时间】:2012-01-24 06:50:50
【问题描述】:
我正在使用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
}
但是在这种情况下;如果我打开两个连接,它将改变我的全局对象。
谁能帮帮我?
【问题讨论】:
标签: objective-c cocoa variables macos-carbon