ユーザーが何かするまで仕事をさせ続ける方法

NSApplication の detachDrawingThread:toTarget:withObject: を使用することで解決しました。

以下に私が用いた方法を書きますが、このように「 Timer を0にセットする方法は効率の悪い方法である」とどこかに書いてありました。
しかしそこでは「効率の良い方法」は教えてくれず、また、どのようにすれば良いのかもわからないので、「動けばいいや」という考えでこのようにしています。

「効率の良い方法」を御存知の方はぜひ教えて下さい。

- (void)PreCalculation
{
aCalcuTimer = [[NSTimer scheduledTimerWithTimeInterval:0
target:self
selector:@selector(Calculation:)
userInfo:nil
repeats:YES] retain];
}

- (void)Calculation:(NSTimer *)aTimer
{
ここで何かする。
if (仕事終わり)
[self endCalculation];
}

- (void)endCalculation
{
[aCalcuTimer invalidate];
}