1

接続が確立されたときにコールバックを使用して、別のスレッドなどで登録された名前の接続を NSConnection で検索するか、実行ループでスケジュールする方法はありますか? 現在、私は使用しています

[NSConnection connectionWithRegisteredName:kRemotePreferencesDOName host:nil]

しかし、これは、接続が見つからない場合は、停止したり、コールバックを提供したりするのではなく、単純に (nil だと思います) を返します。これはサーバーとクライアントの関係には意味がありますが、「サーバー」と「クライアント」はどちらも単なるアプリケーションであり、他のアプリケーションに関係なく、いつでも開いている場合と開いていない場合があります。開いて、サーバーの起動時に何かを実行します (そしてその名前を登録します)。この時点で、理想的には、クライアントに通知され、サーバーへの接続が作成されます。

それが役立つ場合、これはシステム環境設定の設定ペインがターゲット (バックグラウンドのみ) アプリケーションの NSUserDefaults を制御する方法の一部であり、ユーザーが設定ペインを開いたときに実行されている場合と実行されていない場合があります。

4

1 に答える 1

1

while ループを使用して、リモート オブジェクトの準備が整うのを待ちます。接続の待機中にアプリケーションが他の操作を実行する場合は、スレッドを使用します。

NSDistantObject *pObj = nil;

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

    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.]];
}
于 2011-04-29T10:33:58.963 に答える