Короче говоря, я пытаюсь создать простую консольную игру, которая позволяет пользователю вводить команды в консоль, чтобы выполнять действия (например, запуск/останов), в то же время распечатывая различные свойства и действия в консоль.Как я могу запустить NSTimer, сохраняя при этом консольный ввод от пользователя?
_gameDispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(_gameDispatchQueue, ^{
_propertyTimer=[NSTimer scheduledTimerWithTimeInterval: 0.1
target: mairne
selector: @selector(printProperties:)
userInfo: nil
repeats: YES];
[[NSRunLoop currentRunLoop] run];
});
И в моем файле main.mm Я принимаю вход через cin
, а затем принимать на него, когда они попали войти.
Моя проблема с этим кодом заключается в том, что, несмотря на то что я пытаюсь поместить его в фоновый поток, он все равно не позволит пользователю вводить что-либо и нажимать enter. Так, например, если они хотят написать stop
и нажать enter, команда не будет обработана.
Как заставить NSTimer работать в фоновом режиме, но все же разрешить обработку ввода пользователем?
Как вы можете видеть, когда цель различна, printProperties находится в другом классе, чем при создании '_propertyTimer'. Как printProperties знает об _bgQueue? –
А хорошая точка. в этом случае цель должна быть «я», предполагая, что _bgQueue и _propertyTimer инициализируются в (id) init – valheru