iOS 10: "[Додаток], якщо ми перебуваємо в реальному оброблювальному пристрої попереднього здійснення, ми фактично не можемо додати нових парканів через обмеження CA"


389

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


2
Ви викликаєте метод делегата UINavigationController: весела навігаціяController (navigationController: UINavigationController, willShowViewController viewController: UIViewController, анімований: Bool) {}?
Норман Г

2
willShowViewController ніколи не називається, ні ...
плавця

Я отримую те саме. Я використовую SpriteKit і SceneKit і підозрюю їх!
Говард Ловатт

3
Хтось подає звіт про помилку? Я збираюся.
Девід ДельМонте

1
Будь ласка, подивіться на цю відповідь. stackoverflow.com/a/39997761/6602495
Sneha

Відповіді:


285

у вашому Xcode:

  • Клацніть назву вашої активної схеми біля кнопки Зупинити
  • Клацніть на Редагувати схему ....
  • у Виконанні (налагодження) виберіть вкладку Аргументи
  • у змінних середовища натисніть +
  • додати змінну: OS_ACTIVITY_MODE = відключити

скріншот


4
Дякую за додаткову інформацію
amergin

26
Будьте в курсі, що я випадковим чином не отримував NSLog вихід на консоль і знову видаляв це, щоб виправити це. Це більше програмування "високого класу", якому ми піддаємося гунами в яблуці.
америка

37
Для чого це варто, я отримую це повідомлення кожного разу, коли відбувається зміна орієнтації, і я НЕ вимкнено змінну середовища OS_ACTIVITY_MODE.
користувач2698617

5
Примітка. Додавши це, ви також не побачите NSLogs в консолі.
niravdesai21

4
Це не як вимкнення пожежної сигналізації?
ScottyBlades

191

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

Цей спосіб складається з 2 частин:

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

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

Здається, що радари - це найкраще, що ми можемо зробити.


1
Чи можете ви, будь-ласка, детально розробити інструменти, які ви використовували для налагодження, щоб отримати цю назву приватного методу та його структуру?
Олександр Караберов

9
@AlexanderKaraberov ви можете скористатися програмою Hopper Disassembler для пошуку попереджувального тексту у бінарних рамках та посилань на цей текст із приватного методу.
k06a

Я також отримую це, коли клавіатура прокручується, і у мене підписаний контролер, щоб відповідати зміною його поглядів.
yo.ian.g

82

Спробуйте вказати наступне у environment variablesсхемі підrun(debug)

OS_ACTIVITY_MODE = disable

Я отримав це в тренажері під час обертання iPhone 7 за допомогою апаратних-> поворотних пунктів меню. Ця змінна середовище змусила помилкове повідомлення відмовитися.
Джордж Д Гіртон

1
Відповідь від @Foo нижче корисна, оскільки містить детальні відомості.
Кевін Оуенс

1
Він також не друкує журнал попередження про обмеження
chirag shah

36
ОП запитав, звідки походить повідомлення. Просто сказати, як замовкнути, це не правильна відповідь.
iCaramba

6
Відповідь "IOS_ACTIVITY_MODE = відключити" вимикає ВСІ журнали! Просто закрийте подання журналу, якщо ви не хочете бачити журнал. Дійсно смішна відповідь, дивовижна, що в ній стільки голосів! Нічого не стосується фактичного повідомлення. Наші програми, які активно використовують основні дані, добре працюють, ці повідомлення та інші почали з’являтися після одного з останніх оновлень Xcode. Сумно, що Apple не може вирішити подібні проблеми.
Джон

13

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

Додайте ім'я OS_ACTIVITY_MODEта значення ${DEBUG_ACTIVITY_MODE}та перевірте це (у Продукт -> Схема -> Редагувати схему -> Виконати -> Аргументи -> Навколишнє середовище).

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

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

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


Мені не вийшло: я також бачу це на консолі, незважаючи на те, що вже відключив режим активності налагодження, як було запропоновано вище.
Йоган

-1

Щоб виправити, я видалив додаток із Simulator.

Я також побіг чистим першим.

Я не думаю, що щось, що стосується орієнтації, спровокувало це. Найбільше, що змінилося до того, як почався цей симптом, - це те, що рамка Swift почала визивати NSLogробочі потоки замість основної нитки.


1
Очищення спрацьовувало нормально для мене спочатку, коли я запускав його в тренажері, не обертаючи його, але потім, як тільки я знову перевірив команду обертання, він повідомив про ту саму помилку.
чезнеад

Я використовую жести панорами і отримую цю помилку лише при зміні орієнтації.
Джеремі Ендрюс

-8
OS_ACTIVITY_MODE = disable

Це також відключить можливість налагодження в реальних пристроях (відтоді не буде виведено консоль з реальних пристроїв).


6
Ви просто скопіювали попередню відповідь (з меншою кількістю деталей)
Ешлі Міллз

2
насправді TL; DR допомагає.
Хуан Дже Гарсія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.