在OS X 10.6上使用NSConnection的IPC

时间:2014-07-22 11:17:13

标签: objective-c macos networking ipc mach

我开发了两个使用IPC相互通信的应用程序。 这是服务器端和客户端的代码:

服务器:

_distantObject = [[DistantObject alloc] init];

NSPort *serverPort = [NSMachPort port];
_proxyConnection = [[NSConnection alloc] initWithReceivePort:serverPort sendPort:serverPort];
[_proxyConnection setRootObject:_distantObject];

if (![_proxyConnection registerName:@"MyServer"]) {

   NSLog(@"ERROR: starting MyServer");
}

客户端:

    DistantObject *remoteObject;
    NSConnection *theConnection = [NSConnection connectionWithRegisteredName:@"MyServer"
                                                                        host:nil];
    if (theConnection != nil) {

        remoteObject = (DistantObject *)[theConnection rootProxy];
        remoteObject.someValue = value;
    }

问题是它在OS X 10.6上不起作用。但在10.7,10.8和10.9上完美运行。 这是我在10.6收到的错误:

  

__ NSAutoreleaseNoPool():类NSCFDictionary的对象0x10031a0f0自动释放,没有池到位 - 只是泄漏

     

__ NSAutoreleaseNoPool():类NSCFArray的对象0x100330b50自动释放,没有池到位 - 只是泄漏

结果客户端没有传递适当的值。

0 个答案:

没有答案