私はプロセス間通信に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
}
ただし、この場合、 2つの接続を開くと、グローバルオブジェクトが変更されます。
誰でもお手伝いできますか?