Я делаю инструмент CLI для Mac OS X, мои основные выглядят примерно так: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); ... –
Я бы хотел сделать главное меню и ввести фоновый поток, не так ли? –