进程之间的通信采用分布式对象

问题描述:

我不能管理鬻代理对象,它只是停留在客户端时,试图获取连接进程之间的通信采用分布式对象

NSConnection *conn = [NSConnection connectionWithRegisteredName:@"server" host:nil]; 

这里是我注册的连接和鬻对象

//server 
-(void)initServer { 

NSConnection * connection = [[NSConnection alloc]init]; 

MZRemoteObject * obj = [[MZRemoteObject alloc]init]; 
obj.message = @"hello world"; 
[connection setRootObject:obj]; 
if([connection registerName:@"server"]== NO){ 
    NSLog(@"error Register Server"); 
} 
NSLog(@"Registered Server"); 
} 

客户端(获得贩卖的对象)

- (void)recieveMessage { 

NSDistantObject *proxy; 
NSConnection *conn = [NSConnection connectionWithRegisteredName:@"server" host:nil]; 

if (!conn) { 
    NSLog(@"conn recieve message error"); 
} 

proxy = [conn rootProxy]; 
MZRemoteObject * obj =(MZRemoteObject*)proxy; 

if (!proxy) { 
    NSLog(@"proxy,recieve message error"); 
} 
NSLog(@"----%@",obj.message); 
} 

可以在任何一个告诉我,我是什么做错了?

+0

你是从线程调用initServer吗? –

+0

我从主线程调用两种方法,但是从不同的应用程序客户端应用程序和服务器应用程序 – Andrew

+0

您是否使用沙盒?服务器是实际的应用程序,而不是命令行工具吗?有没有写入控制台日志?你有没有考虑过使用'+ serviceConnectionWithName:rootObject:'和'+ rootProxyForConnectionWithRegisteredName:host:'方便的构造函数? –

[[NSRunLoop currentRunLoop] run]; 

在 - (void)initServer方法中启动当前的runloop。

-(void)initServer { 

NSConnection * connection = [[NSConnection alloc]init]; 

MZRemoteObject * obj = [[MZRemoteObject alloc]init]; 
obj.message = @"hello world"; 
[connection setRootObject:obj]; 
if([connection registerName:@"server"]== NO){ 
    NSLog(@"error Register Server"); 
} 
NSLog(@"Registered Server"); 
[[NSRunLoop currentRunLoop] run]; 
} 
+0

有没有必要在主线程上调用它 – Andrew

+0

对不起,我错了:) – Andrew