サーバースタイルのプログラムである最初のOS Xコマンドラインプログラムを書いています。さまざまな情報を処理し、他のイベントに応答するのが仕事です。
main.m に次のコードがあります。
int main(int argc, const char * argv[]) {
@autoreleasepool {
PIPieman *pieman = [[[PIPieman alloc] init] autorelease];
[pieman start];
NSRunLoop *loop = [NSRunLoop currentRunLoop];
while (!pieman.finished && [loop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]);
}
return 0;
}
さまざまなドキュメントからこのコードを取得しましたが、基本的な考え方は、一度pieman.finished
YES に設定すると、プログラムが終了するということです。
私が抱えている問題は、パイマン内のコードによってフラグが設定されているが、実行ループがトリガーされていないため、プログラムが終了しないことです。実行ループをトリガーする方法を探していましたが、さまざまな方法があるようですが、良い解決策とは思えません。たとえばbeforeDate:
、実行ループを定期的にトリガーするために、 を数秒に短縮できます。
finished
私の好みは、ブール値の変更時に何かが実行ループをトリガーすることです。
助言がありますか?