Когда это может позволить снова вздремнуть, вы должны сделать:

отаю над приложением macOS (назовем его «приложение отображения»), которое отображает часы и другие данные, которые управляются другим приложением («управляющим приложением») на той же машине через соединение TCP. Я заметил, что, когда приложение дисплея некоторое время не используется (> 60 секунд), а затем планирует NSTimer (с интервалом 0,2 секунды), требуетсяочень Задолго до того, как таймер сработает в первый раз (в диапазоне 6-10 секунд, иногда дольше.) Это происходит в основном, когда приложение дисплея не находится на переднем крае (потому что это приложение управления.) Как только таймер сработал в первый раз , он работает как положено (с некоторыми небольшими, ожидаемыми задержками в таймере) в течение некоторого времени.

Но когда таймер работает в течение длительного времени (более 5 минут), существуют похожие крайние задержки между срабатыванием (также 6-10 секунд). Это похоже на ручное планирование таймера с помощью

[[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];

немного откладывает проблему (используя[NSTimer scheduledTimer...] заставляет эту проблему появляться быстрее, чем при ручном добавлении ее в runloop.)

Это вызывает много проблем, потому что часы не обновляются в течение этого времени.

Я предполагаю, что это происходит потому, что macOS считает приложение отображения «неактивным» или «неактивным» в некотором роде.

Есть ли способ предотвратить, контролировать или обойти это поведение?

Ответы на вопрос(1)

Ваш ответ на вопрос