我有一个独立的(第 3 方)应用程序,我正在尝试使用命令“kick”来启动它。我已经设置了我的 ~/.bash_profile 和 /etc/bashrc 文件,这样我就可以在终端窗口中输入 kick [command] 并且它运行良好。所以我假设我已经正确设置了所有内容。
当我尝试使用 NSTask 时,问题就来了。
基本上我正在做的是创建两个可变数组,kickBuild 和 kickOut。一个用于组装命令(它是一串标志),一个用于与 NSTask 一起使用。我采用 kickBuild 并将其转换为由空格分隔的字符串,然后将其作为对象添加到第二个数组中。
所以我的命令应该看起来像“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
任何帮助表示赞赏。
太感谢了