我正在爲Mac OS X中的CLI工具,我的主要看起來是這樣的:的NSTimer/NSRunLoop發出
int main(int argc, const char * argv[]){
@autoreleasepool {
//Some startup stuff here
[ServerPool sharedPool]; //Start the pool
/*
UI stuff for cli version
*/
while (1){
[[CLIUI sharedCLI] mainMenu];
[[CLIUI sharedCLI] menuInput];
}
}
return 0;
}
,並在代碼中的另一段我開始的NSTimer
progressUpdateTimer = [NSTimer timerWithTimeInterval:1.0
target:self
selector:@selector(updateProgress:)
userInfo:nil
repeats:YES];
[[NSRunLoop currentRunLoop] addTimer: progressUpdateTimer forMode:NSDefaultRunLoopMode];
但是,它永遠不會觸發選擇器updateProgress :.我相信這是因爲我沒有在我的主體中建立一個NSRunLoop,那麼適當的解決方法是什麼?
您的'mainMenu'和'menuInput'方法是否阻塞,直到發生某些事件?或者他們是否只是輪詢一個事件並立即返回?如果他們阻止,他們阻止什麼? –
fgets(_input,sizeof _input,stdin); ... –
我想讓主菜單和後臺線程輸入不是嗎? –