我编写了我的第一个 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,程序就会退出。
我遇到的问题是 pieman 内的代码正在设置标志,但没有触发运行循环,因此程序不会退出。我一直在寻找触发运行循环的方法,似乎有很多种,但没有一个感觉是一个好的解决方案。例如,我可以将时间减少beforeDate:
到几秒钟以导致定期触发运行循环。
我的偏好是在finished
布尔值更改时触发运行循环。
有什么建议么?