1

アプリケーション内で、2 つのプロセスにわたってオブジェクトを販売しようとしています。ただし、コードをテストすると、提供されたオブジェクトを受け取るプロセスがブロックされます。私は多かれ少なかれhttp://www.mikeash.com/pyblog/friday-qa-2009-02-20-the-good-and-bad-of-distributed-objects.htmlのサンプルコードに従いました。

以下は、私の 2 つのプロセスのコードです。

/*
 * Description: Vends an object that the receiver can then access
 *              through the distributed object.
 */

#import <Cocoa/Cocoa.h>
#import <iostream>

using namespace std;

int main() {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    cout << "Starting vendor " << endl;

    NSMutableArray *mutable_array;
    [mutable_array addObject:@"Louis Lang"];
    [mutable_array addObject:@"John Doe"];

    NSConnection *connection = [NSConnection connectionWithReceivePort:[NSPort port] sendPort:nil];
    [connection setRootObject:mutable_array];
    [connection registerName:@"com.example.whatever"];

    [[NSRunLoop currentRunLoop] run];


    [pool drain];

    return 0;
}

そして「受け手」

/*
 * Description: Receives the vended object from the server
 *
 */

#import <Cocoa/Cocoa.h>
#import <iostream>

using namespace std;

int main() {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    cout << "Starting receiver." << endl;

    id theObject = (id)[NSConnection rootProxyForConnectionWithRegisteredName:@"com.example.whatever" host:nil];

    int the_count = [theObject count];

    NSLog(@"There are %i items in mutable_array", the_count);

    [pool drain];

    return 0;
}
4

1 に答える 1

2

あなたのコードは、少なくとも分散オブジェクトの部分では問題ないようです。しかし:

NSMutableArray* mutable_array = [[NSMutableArray alloc] init];
[mutable_array addObject:@"Louis Lang"];
[mutable_array addObject:@"John Doe"];

間違いなく役立つと思います。

Xcode 4.4+ を使用している場合は、次のようにすることもできます。

NSArray* array = @[ @"Louis Lang", @"John Doe" ];
于 2012-07-18T19:47:23.813 に答える