使NSConnection停顿,直到找到注册名称的连接

问题描述:

是否有任何方法让NSConnection搜索与一个注册名称,说一个单独的线程,或调度在运行循环中的连接,并进行连接时的回调?目前我使用使NSConnection停顿,直到找到注册名称的连接

[NSConnection connectionWithRegisteredName:kRemotePreferencesDOName host:nil]

但这只是返回(无我认为)如果没有找到该连接,而非失速或以其他方式给回调。虽然这对于服务器 - 客户端关系是有意义的,但“服务器”和“客户端”都只是应用程序,它们可能在任何时候都可能打开,也可能不打开,所以客户端很可能会在服务器启动时(并注册其名称)打开并执行一些操作。此时理想情况下,客户端将被通知/将建立一个连接到服务器。

如果有帮助,这是一种方式的系统偏好设置偏好设置中,当用户打开偏好设置面板控制目标(背景仅)应用程序,它可能会或可能不会运行的部分NSUserDefaults的。

只需使用while循环等待远程对象准备就绪。如果应用程序想要在等待连接时执行其他操作,请使用线程。

NSDistantObject *pObj = nil; 

while(nil == pObj) 
{ 
    pObj = [[NSConnection rootProxyForConnectionWithRegisteredName:kRemotePreferencesDOName 
                   host:nil] retain]; 

    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.]]; 
}