これについてのスタックオーバーフローに関するいくつかの質問があります。 This question was the only questionは地雷に最も近いが、通知を使用する。NSTask起動パスにアクセスできません。 Xcodeで動作します。 Xcodeのエラーが表示されます
コードは非常に簡単です。新しい空のMac OSXプロジェクトを作成し、applicationDidFinishLaunching:
メソッドに次のコードを貼り付けます。実行可能ファイル(この場合はGIT)のパスを取得するはずです。
NSTask *aTask = [[NSTask alloc] init];
NSPipe *outputPipe = [NSPipe pipe];
NSPipe *errorPipe = [NSPipe pipe];
[aTask setStandardOutput: outputPipe];
[aTask setStandardError: errorPipe];
[aTask setArguments:[NSArray arrayWithObject:@"which"]];
[aTask setLaunchPath:@"/usr/bin/git"];
NSFileHandle *outputFileHandler = [outputPipe fileHandleForReading];
NSFileHandle *errorFileHandler = [errorPipe fileHandleForReading];
[aTask launch];
[aTask waitUntilExit];
// Task launched now just read and print the data
NSData *data = [outputFileHandler readDataToEndOfFile];
NSString *outPutValue = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSData *errorData = [errorFileHandler readDataToEndOfFile];
NSString *errorValue = [[NSString alloc] initWithData:errorData encoding:NSUTF8StringEncoding];
NSLog(@"Error value: %@",errorValue);
NSLog(@"Output Value: %@",outPutValue);
このコードは2本の読み取りパイプを設定し、一つのコマンド実行します:which git
を。
私はXcodeでこれを実行する場合、私は、これはcorretly結果を得る:
Error value: ""
Output Value: /usr/bin/git
私は私のビルド/製品/ Debugフォルダに移動し、二重の実行可能ファイルをクリックした場合、私は、コンソールアプリケーションに印刷され、このメッセージが表示されます:
質問:だから、ここは本当に問題は何ですか?ちょうど代替の解決策を作ってください...私はまた、問題が何かを知りたいです..ありがとう。