在我的程序中,我目前使用了 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;
}
我真的希望可以解决这个问题,我真的不明白为什么会崩溃。
提前谢谢大家。