iOS 10: «[Приложение], если мы находимся в реальном обработчике предварительной фиксации, мы не можем добавить какие-либо новые заборы из-за ограничения CA»
389
Я иногда получаю это сообщение в журналах Xcode 8b3, когда запускаю мое приложение, кажется, что все работает, но я хотел бы знать, откуда это происходит. Гугл вообще не помог.
Вы вызываете метод делегата UINavigationController: fun navigationController (navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {}?
Норман Г,
2
willShowViewController никогда не называется, нет ...
swalkner
Я получаю то же самое. Я использую SpriteKit и SceneKit и подозреваю их!
Имейте в виду, что я случайно не получал вывод NSLog на консоль и удалил это снова, чтобы это исправить. Это больше «высококлассное» программирование, которому мы подвергаемся в компании Apple.
Amergin
37
Что бы это ни стоило, я получаю это сообщение всякий раз, когда происходит изменение ориентации, и у меня действительно отключена переменная среды OS_ACTIVITY_MODE.
user2698617 28.12.16
5
Примечание: добавив это, вы также не увидите NSLogs в консоли.
niravdesai21
4
Разве это не похоже на выключение пожарной сигнализации?
ScottyBlades
191
Это происходит +[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]через API os_log. Он не зависит от других компонентов / каркасов, которые вы используете (только от UIKit) - он воспроизводит в чистом проекте приложения единого представления при изменении ориентации интерфейса.
Этот метод состоит из 2 частей:
добавление переданного обработчика precommit в список обработчиков;
выполнить некоторую работу, которая зависит от текущего состояния конечного автомата.
Когда вторая часть выходит из строя (выглядит как запрещенный переход), она печатает сообщение выше в журнал ошибок. Тем не менее, я думаю, что эта проблема не является фатальной: в этом методе есть 2 дополнительных случая подтверждения, которые приведут к сбою при отладке.
Кажется, что радар - лучшее, что мы можем сделать.
Не могли бы вы рассказать о инструментах, которые вы использовали для отладки, чтобы получить имя этого частного метода и его структуру?
Александр Караберов
9
@AlexanderKaraberov Вы можете использовать Hopper Disassembler, чтобы найти текст предупреждения в двоичном формате фреймворка и ссылки на этот текст из частного метода.
k06a
Я также получаю это, когда клавиатура прокручивается, и у меня есть контроллер, подписанный, чтобы ответить изменением его представлений.
Я получил это в симуляторе при вращении iPhone 7 с помощью пунктов меню «аппаратное обеспечение» - «поворот». Эта переменная окружения убрала ложное сообщение.
Джордж Д Гиртон
1
Ответ от @Foo ниже полезен, потому что он включает в себя подробные инструкции.
Кевин Оуэнс
1
Также не печатается журнал предупреждений об ограничениях
чираг шах
36
ОП спросил, откуда пришло сообщение. Просто сказать, как заставить замолчать, это не правильный ответ.
iCaramba
6
Ответ "IOS_ACTIVITY_MODE = disable" отключает ВСЕ записи! Просто закройте окно регистрации, если вы не хотите видеть журнал. Действительно смешной ответ, удивительно, что у него так много голосов! Ничего не предпринимает для решения фактического сообщения. Наши приложения, которые интенсивно используют основные данные, работают нормально, эти сообщения и другие начали появляться после одного из последних обновлений XCode. Грустно, что Apple не может решить такие проблемы.
Джон
13
Мы можем отключить его таким образом (устройству и симулятору нужны разные значения):
Добавьте Имя OS_ACTIVITY_MODEи Значение ${DEBUG_ACTIVITY_MODE}и проверьте его (в Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment).
Добавить определяемых пользователем Настройка DEBUG_ACTIVITY_MODE, а затем добавить Any iOS Simulator SDKк Debugи установите его значение disable(в Project -> Настройки Build -> + -> User-Defined Setting)
У меня не сработало: я также вижу это в консоли, несмотря на то, что уже отключил режим отладочной активности, как предложено выше.
Йохан
-1
Чтобы исправить, я удалил приложение из симулятора.
Я также побежал Чистым первым.
Я не думаю, что что-либо связанное с ориентацией вызвало это. Самое главное, что изменилось до появления этого симптома, это то, что среда Swift начала вызывать NSLogрабочие потоки вместо основного потока.
Вначале выполнение очистки работало нормально, когда я запускал его в симуляторе, не поворачивая его, но затем, как только я снова проверил его с помощью команды вращения, он сообщил об ошибке.
Cheznead
Я использую панорамирование и получаю эту ошибку только при смене ориентации.
Джереми Эндрюс
-8
OS_ACTIVITY_MODE = disable
Это также отключит возможность отладки на реальных устройствах (с этого момента не будет выводиться консоль с реальных устройств).
willShowViewController
никогда не называется, нет ...Ответы:
в вашем Xcode:
источник
Это происходит
+[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]
через API os_log. Он не зависит от других компонентов / каркасов, которые вы используете (только от UIKit) - он воспроизводит в чистом проекте приложения единого представления при изменении ориентации интерфейса.Этот метод состоит из 2 частей:
Когда вторая часть выходит из строя (выглядит как запрещенный переход), она печатает сообщение выше в журнал ошибок. Тем не менее, я думаю, что эта проблема не является фатальной: в этом методе есть 2 дополнительных случая подтверждения, которые приведут к сбою при отладке.
Кажется, что радар - лучшее, что мы можем сделать.
источник
Попробуйте вставить следующее
environment variables
для схемы подrun(debug)
источник
Мы можем отключить его таким образом (устройству и симулятору нужны разные значения):
Добавьте Имя
OS_ACTIVITY_MODE
и Значение${DEBUG_ACTIVITY_MODE}
и проверьте его (в Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment).Добавить определяемых пользователем Настройка
DEBUG_ACTIVITY_MODE
, а затем добавитьAny iOS Simulator SDK
кDebug
и установите его значениеdisable
(в Project -> Настройки Build -> + -> User-Defined Setting)источник
Чтобы исправить, я удалил приложение из симулятора.
Я также побежал Чистым первым.
Я не думаю, что что-либо связанное с ориентацией вызвало это. Самое главное, что изменилось до появления этого симптома, это то, что среда Swift начала вызывать
NSLog
рабочие потоки вместо основного потока.источник
Это также отключит возможность отладки на реальных устройствах (с этого момента не будет выводиться консоль с реальных устройств).
источник