2

2 つのアプリケーションがあり、1 つは UI (Cocoa アプリ) を備えています。もう 1 つはコンソール アプリです。

私の要件は、CocoaApp でユーザー入力を受け取り、それを処理して ConsoleApp に渡し、値を返すことです。

私はこのようなことを試しました。データを送信して処理することはできますが、戻すことはできません。NSDistributedNotification を使用してはなりません。Google で調べたところ、NSPipe が機能することがわかりましたが、パイプを実現して使用する方法を理解できません。提案して理解を助けてください。

私のコードはここにあります:

CocoaApp では:

- (IBAction)addClicked:(id)sender {

    if (self.firstNumber.stringValue.length == 0 || self.secondNumber.stringValue.length ==0) {
        NSLog(@"Enter values in both the fields");
        return;
    }

    NSString *a = self.firstNumber.stringValue;
    NSString *b = self.secondNumber.stringValue;

    NSTask *unixTask = [[NSTask alloc] init];

    [unixTask setArguments:@[a, b]];

    [unixTask setLaunchPath:@"/Users/.../ConsoleApp"];//the path

    [unixTask launch];
}

ConsoleApp で:

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...

        NSArray *args = [[NSProcessInfo processInfo] arguments];
        NSLog(@"%@", args);

        if(args.count>1){
            Adder *adderObject = [Adder new];
            adderObject.aInt = [args[1] integerValue];
            adderObject.bInt = [args[2] integerValue];

            NSInteger sum = [adderObject addAwithB];

            NSLog(@"Sum = %ld", sum);

        }
    }
    return 0;
}
4

1 に答える 1