コマンド「kick」を使用して起動しようとしているスタンドアロン (サードパーティ) アプリがあります。~/.bash_profile ファイルと /etc/bashrc ファイルをセットアップして、ターミナル ウィンドウに kick [command] と入力すると、完全に機能するようになりました。したがって、すべてが正しくセットアップされていると想定しています。
問題は、NSTask を使用しようとすると発生します。
基本的に、私がやっていることは、kickBuild と kickOut という 2 つの可変配列を作成することです。1 つはコマンド (フラグの文字列) を組み立てるためのもので、もう 1 つは NSTask で使用するためのものです。kickBuild をスペースで区切られた文字列に変換し、それをオブジェクトとして 2 番目の配列に追加します。
したがって、私のコマンドは「kick -i /path/to/input/file.ext -as 2 -g 2.2」などのようになります。これを端末ウィンドウに入力すると、うまく機能します。
kickBuild = [[NSMutableArray alloc] initWithCapacity:100];
kickOut = [[NSMutableArray alloc] initWithCapacity:2]; // Thinking that this should be "kick" and then "-i /path/to/input/file.ext -as 2 -g 2.2"
kickPath = [kickLocationTextField stringValue]; // This is just the path to my kick executable. NOT /bin/sh. Is that correct?
NSString *tempKick = [kickBuild componentsJoinedByString: @" "];
[kickOut addObject:tempKick];
[NSTask launchedTaskWithLaunchPath:kickPath arguments:kickOut];
アプリをビルドしてこのコードを実行すると、このエラーが発生します…</p>
dyld: ライブラリがロードされていません: build/darwin_x86_64/gcc_opt_dynamic/core/libai.dylib
参照元: /Users/Gene/Kick/Kick-3.3.4.0/bin/kick
理由: 画像が見つかりません
これは kickOut の NSLog です… kick -i /Users/Gene/Test_Main.0001.ext -r 960 540 -as 2 -g 2.2 -v 5 -dp
これは私が間違っていることですか?それともキックの問題?
NSTask を正しく使用していることを確認するために、基本的な端末タスクで NSTask をテストするにはどうすればよいですか?
kickBuild = [[NSMutableArray alloc] initWithCapacity:5];
kickOut = [[NSMutableArray alloc] initWithCapacity:2];
kickPath = @"/bin/sh";
[kickBuild addObject:@"-c"]; // Do I need this?
[kickBuild addObject:@"ls"];
[kickBuild addObject:@"~/Desktop"];
NSString *tempKick = [kickBuild componentsJoinedByString: @" "];
[kickOut addObject:tempKick];
[NSTask launchedTaskWithLaunchPath:kickPath arguments:kickOut];
@"-c" なしでこれを実行すると、次のようになります: /bin/sh: ls ~/Desktop: No such file or directory
どんな助けでも大歓迎です。
どうもありがとう