使用命令行参数重新启动cocoa app

时间:2017-05-25 11:47:20

标签: objective-c macos cocoa nstask

我正在尝试使用一些命令行参数重新启动我的应用程序。下面的代码工作(没有命令行参数)

- (void)relaunchAfterDelay:(float)seconds
{
NSLog(@"relaunchAfterDelay ") ;
NSTask *task = [[NSTask alloc] init] ;
NSArray * args = [ NSArray arrayWithObjects:@"-c", [NSString stringWithFormat:@"sleep %f; open \"%@\"", seconds, [[NSBundle mainBundle] bundlePath]], nil ] ;
[task setLaunchPath:@"/bin/sh"];
[task setArguments:args];
[task launch];
[NSNotificationCenter defaultCenter ] postNotificationName : @"Terminate" object : self ] ;
}

但是,如果我将所需的命令行参数添加到args数组,则应用会终止,但不会重新启动。

我做了类似的事情:

NSMutableArray *obj = [ NSMutableArray arrayWithObjects:@"-c",  @"updated", nil ] ;
NSArray * args = [ NSArray arrayWithObjects:obj, [NSString stringWithFormat:@"sleep %f; open \"%@\"", seconds, [[NSBundle mainBundle] bundlePath]], nil ] ;

"更新"是要传递给新实例的必需参数。我错过了什么?

感谢任何帮助。

0 个答案:

没有答案