Я иногда получаю это сообщение в логах Xcode 8b3 при запуске моего приложения, все вроде бы работает, но я хотел бы знать, откуда оно берется. Google не помог вообще.

swalkner

Ответов: 6

Ответы (6)

Попробуйте поместить следующее в переменные окружения для схемы под run(debug)

OS_ACTIVITY_MODE = disable
OS_ACTIVITY_MODE = disable

Это также отключит возможность отладки на реальных устройствах (с этого момента консольный вывод с реальных устройств будет отсутствовать).

Чтобы исправить ситуацию, я удалил приложение из Simulator.

Я также сначала запустил Clean.

Я не думаю, что это вызвано чем-то связанным с ориентацией. Самое большое, что изменилось до появления этого симптома, - это то, что фреймворк Swift начал вызывать NSLog на рабочих потоках вместо основного потока.

в вашем Xcode:

  • Нажмите на название вашей активной схемы прямо рядом с кнопкой Stop
  • Нажмите на Edit Scheme....
  • в разделе Run (Debug) выберите вкладку Arguments
  • в разделе Переменные среды нажмите +
  • добавьте переменную: OS_ACTIVITY_MODE = disable

скриншот

Это происходит из +[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:] через os_log API. Это не зависит от других компонентов/фреймворков, которые вы используете (только от UIKit) - это воспроизводится в чистом проекте приложения с одним видом при изменении ориентации интерфейса.

Этот метод состоит из 2 частей:

  1. добавление переданного обработчика прекоммита в список обработчиков;
  2. выполнение некоторой работы, которая зависит от текущего состояния конечного автомата состояния.

Когда вторая часть не работает (выглядит как запрещенный переход), она печатает сообщение выше в журнал ошибок. Однако я думаю, что эта проблема не фатальна: в этом методе есть 2 дополнительных случая assert, которые приведут к сбою в отладке.

Кажется, что радар - это лучшее, что мы можем сделать.

Мы можем отключить звук таким образом (для устройства и симулятора нужны разные значения):

Добавьте имя OS_ACTIVITY_MODE и значение ${DEBUG_ACTIVITY_MODE} и проверьте его (в Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment).

введите описание изображения здесь

Добавьте определяемую пользователем настройку DEBUG_ACTIVITY_MODE, затем добавьте Any iOS Simulator SDK для Debug и установите ее значение disable (в Project -> Build settings -> + -> User-Defined Setting)

.

введите описание изображения здесь

2022 WebDevInsider