【问题标题】:NSTask crashes when used in functionNSTask 在函数中使用时崩溃
【发布时间】:2012-06-17 08:51:06
【问题描述】:

在我的程序中,我目前使用了 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;
}

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

提前谢谢大家。

【问题讨论】:

  • 它是如何崩溃的?退出代码是什么?有例外吗?有控制台输出吗?
  • 了解和喜爱 NSParameterAssert
  • 除了 SIGBART 什么都没说,有帮助吗?或者我在哪里可以找到有关崩溃的更多信息?
  • 我建议您扩展您的问题,因为您没有为任何人提供足够的信息来实际帮助您。这通常会导致 cmet 中真正想帮助您的其他用户向 cmets 提出一系列冗长而令人沮丧的请求,以获取更多信息。例如,在问题中包括:代码 sn-ps/samples、您正在使用的 API、堆栈跟踪、屏幕截图等。完成此操作后,标记以重新打开您的问题。也请花时间read this。谢谢。

标签: objective-c xcode cocoa nstask


【解决方案1】:

看看这个,我用它很酷:

https://gist.github.com/1875386

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

rc

【讨论】:

    猜你喜欢
    • 2011-06-04
    • 2015-04-22
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多