我正在使用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
}
但在這種情況下,如果我打開兩個連接,它會改變我的全局對象。
任何人都可以請幫我嗎?