Я работаю над приложением macOS (назовем его «приложением отображения»), которое отображает часы и другие данные, которые управляются другим приложением («управляющим приложением») на той же машине через соединение TCP,Я заметил, что, когда приложение дисплея некоторое время не используется (> 60 секунд), а затем планирует NSTimer (с интервалом 0,2 секунды), требуется очень много времени, прежде чем таймер сработает дляв первый раз (в диапазоне 6-10 секунд, иногда дольше.) Это происходит в основном, когда приложение дисплея не находится на переднем крае (потому что это приложение управления.) Как только таймер сработал в первый раз, он работает как положено (снекоторые небольшие, ожидаемые задержки в таймере) на некоторое время.
Но когда таймер работает в течение длительного времени (более 5 минут), существуют похожие экстремальные задержки между срабатыванием (также 6-10 секунд).) Похоже, что ручное планирование таймера с помощью
[[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
немного откладывает проблему (при использовании [NSTimer scheduledTimer...]
эта проблема появляется раньше, чем при ручном добавлении ее в цикл запуска.)
Этовызывает много проблем, потому что часы не обновляются в течение этого времени.
Я предполагаю, что это происходит потому, что macOS считает приложение отображения "неактивным" или "неактивным" в некотором роде.
Есть ли способ предотвратить, контролировать или обойти это поведение?