IOS 10: "[App], если мы находимся в реальном обработчике pre-commit, мы фактически не можем добавлять никаких новых ограждений из-за ограничения CA"

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

Ответы

Ответ 1

в вашем Xcode:

  • Нажмите на название активной схемы рядом с кнопкой "Стоп"
  • Нажмите "Изменить схему".
  • в Run (Debug) выберите вкладку "Аргументы"
  • в переменных среды нажмите +
  • добавить переменную: OS_ACTIVITY_MODE = отключить

screenshot

Ответ 2

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

Этот метод состоит из двух частей:

  • добавление обработчика precommit в список обработчиков;
  • выполните некоторую работу, которая зависит от текущего состояния конечного состояния.

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

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

Ответ 3

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

OS_ACTIVITY_MODE = disable

Ответ 4

Ответ "IOS_ACTIVITY_MODE = отключить" отключает ВСЕ протоколирование! Просто закройте окно ведения журнала, если вы не хотите видеть журнал. Действительно смешной ответ, удивительный, что у него так много голосов! Ничего не касается фактического сообщения.

Наши приложения, которые сильно используют основные данные, работают нормально, эти сообщения и другие начали появляться после одного из последних обновлений Xcode. Печально, что Apple не может решить эти проблемы.

Ответ 5

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

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

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

Добавьте пользовательскую настройку DEBUG_ACTIVITY_MODE, затем добавьте Any iOS Simulator SDK для Debug и установите для нее значение disable (в Project → Настройки сборки → + → Пользовательские настройки)

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

Ответ 6

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

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

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

Ответ 7

OS_ACTIVITY_MODE = disable

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