2010-11-13 37 views
1

是否有任何方法讓NSConnection搜索與一個註冊名稱,說一個單獨的線程,或調度在運行循環中的連接,並進行連接時的回調?目前我使用使NSConnection停頓,直到找到註冊名稱的連接

[NSConnection connectionWithRegisteredName:kRemotePreferencesDOName host:nil]

但這只是返回(無我認爲)如果沒有找到該連接,而非失速或以其他方式給回調。雖然這對於服務器 - 客戶端關係是有意義的,但「服務器」和「客戶端」都只是應用程序,它們可能在任何時候都可能打開,也可能不打開,所以客戶端很可能會在服務器啓動時(並註冊其名稱)打開並執行一些操作。此時理想情況下,客戶端將被通知/將建立一個連接到服務器。

如果有幫助,這是一種方式的系統偏好設置偏好設置中,當用戶打開偏好設置面板控制目標(背景僅)應用程序,它可能會或可能不會運行的部分NSUserDefaults的。

回答

1

只需使用while循環等待遠程對象準備就緒。如果應用程序想要在等待連接時執行其他操作,請使用線程。

NSDistantObject *pObj = nil; 

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

    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.]]; 
} 
相關問題