2012-06-17 5 views
0

내 프로그램에서 현재 NSTask를 5 번 사용하고 있으며 모두 잘 작동하지만 너무 유사 할 때 너무 많은 코드를 반복해야한다는 것에 지쳐서 퍼팅을 시도했습니다. 함수. 불행히도 그 결과 줄에 충돌이 발생합니다 : [task launch]. 그 외에도 나는이 코드를 함수 밖에서 완벽하게 작동하는 것처럼 충돌을 일으키는 원인을 파악할 수 없다. 다음과 같이함수에서 사용할 때 NSTask가 충돌 함

내가 사용하는 방법은 다음과 같습니다

- (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; 
} 

나는 정말이 충돌하는 이유 정말 볼 수없는,이 해결 될 수 있기를 바랍니다.

미리 감사드립니다.

+3

어떻게 충돌 하는가? 종료 코드는 무엇입니까? 예외가 있습니까? 콘솔 출력이 있습니까? –

+0

NSParameterAssert –

+0

SIGBART를 제외하고는 아무 것도 말하지 않습니다. 도움이됩니까? 또는 충돌에 대한 자세한 정보는 어디에서 찾을 수 있습니까? – Cristian

답변

0

확인이 밖으로 꽤 멋진 나는 그것을 사용

https://gist.github.com/1875386

그것은 훨씬 쉽게 arrayWithObjects을 사용하는 것보다 : NSTask을 위해 ...

RC