1

2つのCocoa-GUI-Applicationsがあります(ARCでコンパイルされ、サンドボックス化されていません)。

アプリケーション1には次の機能があります。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application

    CommController *cc = [CommController new];
    NSConnection *theConnection;
    theConnection = [NSConnection new];
    [theConnection setRootObject:cc];
    if ([theConnection registerName:@"MyServer"] == NO) {
        /* Handle error. */
        NSLog(@"Could not start server.");
    }

}

また、アプリケーション2には次の機能があります。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    id theProxy;
    NSConnection *theConnection;

    theConnection = [NSConnection
                     connectionWithRegisteredName:@"MyServer"
                     host:nil];
    theProxy = [theConnection rootProxy];
    [theProxy setProtocolForProxy:@protocol(NetProto)];

}

2番目のアプリケーションからの呼び出し[theConnection rootProxy]は返されません。[NSConnection defaultConnection]代わりに非推奨を使用する[NSConnection new]と機能します。したがって、rootProxyを取得するための非推奨ではない方法を探しています。

4

2 に答える 2

1

NSConnectionケン・トーマスによって提案されたオブジェクトへの強い参照を維持することは助けになりました。

于 2013-03-15T13:28:30.317 に答える
0
CommController *cc = [CommController new];
    NSConnection *theConnection;
    theConnection = [NSConnection new];
    [theConnection setRootObject:cc];
    if ([theConnection registerName:@"MyServer"] == NO) {
        /* Handle error. */
        NSLog(@"Could not start server.");
    }
[[NSRunLoop currentRunLoop] run];//Start the current runloop
于 2013-03-14T06:39:43.903 に答える