我开发了两个使用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自动释放,没有池到位 - 只是泄漏
结果客户端没有传递适当的值。