OSX 上の特定のフォルダーのすべてのサブフォルダーを反復処理し、見つかったフォルダーごとにデリゲートにメッセージを送信するクラスがあります。
見つかったフォルダーごとに、NSTask
. ここまでは順調ですね。問題が発生するのは、 を に指定したときterminationHandler
です。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リポジトリを識別し、コマンドを実行しています。