我有一个类,它遍历 OSX 上给定文件夹的所有子文件夹,并为它找到的每个文件夹向其委托发送一条消息。
对于找到的每个文件夹,我想运行一个NSTask
. 到目前为止,一切都很好。当我指定 aterminationHandler
时NSTask
,我遇到了问题。
这是代码:
-(void)crawler:(FTCFileSystemCrawler *)aCrawler
didFindFolder:(NSURL *)aURL
withName:(NSString *)aFileName
stop:(BOOL *)stop{
NSTask *task = [NSTask new];
task.launchPath = @"/usr/bin/say";
task.arguments = @[aFileName];
task.terminationHandler = ^(NSTask *aTask){
NSLog(@"Terminating!");
[self.tasks removeObject:aTask];
};
[self.tasks addObject:task];
[task launch];
//[task waitUntilExit];
}
这工作正常,它发送launch
到后NSTask
,我发送waitUntilExit
。如果我不这样做,则终止处理程序永远不会运行。
我究竟做错了什么?
PS请记住,这只是一个简单的例子。我实际上是在使用它来识别 git repos 并对其运行命令。