3

NSTaskをバックグラウンドで実行し続ける方法に関するいくつかの良い情報を見てきましたが、それは完全に私がやりたいことではありません。私がやりたいのは、バックグラウンドで定期的に(30秒ごとのように)NSTaskを実行してから、それを強制終了することです。これが私がやりたいことの一例かもしれません:

NSTask *theTask = [ [ NSTask alloc ] init ];
NSPipe *taskPipe = [ [ NSPipe alloc ] init ];

[ theTask setStandardError:taskPipe ];
[ theTask setStandardOutput:taskPipe ];
[ theTask setLaunchPath:@"/bin/ls" ];
[ theTask setArguments:[ NSArray arrayWithObject:@"-l" ] ];
[ theTask launch ];

// Wait 30 seconds, then repeat the task
4

1 に答える 1

3

おそらく、スレッドをスリープ状態にして、do ループ内で 30 秒間待機するだけです。

do {

[ theTask launch ]; //Launch the Task
sleep(30);          //Sleep/wait 30 seconds 

} while (someCondition);

それ以外の場合は、 NSTimerを使用できます。

NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 30.0
                      target: self
                      selector:@selector(onTick:)
                      userInfo: nil repeats:YES];


- (void)onTick:(NSTimer *)timer {
    //In this method that will be get called each 30 seconds, 
    //you have to put the action that you want to perform ...
    [ theTask launch ];
}
于 2012-09-09T09:08:20.700 に答える