在函数中使用时,NSTask崩溃

时间:2012-06-17 08:51:07

标签: objective-c xcode cocoa nstask

在我的程序中,我目前使用NSTask 5次,而且一切都运行得很好,但是当我的代码非常相似时,我已经厌倦了重复这么多代码,所以我尝试将它放在一个函数中。不幸的是,它会导致线路崩溃:[task launch]。除此之外,我无法弄清楚导致崩溃的原因,就好像我在函数之外使用此代码一样,它完美无缺。

我使用的方法如下:

- (NSString *)performTask: (NSString *)launchPath: (NSString *)argument1: (NSString *)argument2: (NSString *)argument3: (NSString *)argument4: (NSString *)argument5
{
    NSString *resPath = [[NSBundle mainBundle] resourcePath];
    NSTask *task = [[NSTask alloc] init];
    [task setLaunchPath: [NSString stringWithFormat: launchPath, resPath]];
    NSArray *arguments = [NSArray arrayWithObjects: argument1, argument2, argument3, argument4, argument5, nil];
    [task setArguments: arguments];
    NSPipe *pipe = [NSPipe pipe];
    [task setStandardInput:[NSPipe pipe]];
    [task setStandardOutput: pipe];
    NSFileHandle *file = [pipe fileHandleForReading];
    [task launch];
    NSData *data = [file readDataToEndOfFile];
    NSString *status = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
    return status;
}

我真的希望这可以解决,我真的不明白为什么会崩溃。

先谢谢大家。

1 个答案:

答案 0 :(得分:0)

检查一下,我用它很酷:

https://gist.github.com/1875386

它比使用arrayWithObjects容易得多:对于NSTask ......

RC