З вашим кодом немає нічого поганого. Це повідомлення про реєстрацію, внутрішнє для Apple, і ви повинні подати про це радар.
Є два підказки, які показують, що це, мабуть , код Apple:
Підкреслення, що веде ім'я методу, _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
є умовою, яка вказує, що метод є приватним / внутрішнім для класу, в якому він оголошений. (Див. Цей коментар .)
Розумно здогадатися, що префікс із двох букв у FBSSceneSnapshotAction
є скороченим для FrontBoard, який, на думку Рене Річі в "Списку бажань iOS 9: Гість", є частиною всієї родини програмного забезпечення, що стосується запуску програм:
З iOS 8 Apple переробила свій системний менеджер SpringBoard на кілька менших, більш сфокусованих компонентів. На додаток до BackBoard, який вже був виділений для обробки фонових завдань, вони додали Frontboard для завдань переднього плану. Вони також додали PreBoard для обробки екрана блокування в безпечних, зашифрованих умовах. [...]
Я не уявляю, для чого призначений BS
префікс in BSSettings
, але
BS
є скороченим словом BackBoard Settings
, і аналіз цього повідомлення журналу свідчить про те, що це не те, що ви робили, і вам слід подати радар із кроками для відтворення повідомлення про реєстрацію.
Якщо ви хочете спробувати захопити трасування стека, ви можете реалізувати категорію, зв’язану з цим . Деякі стверджують, що перевизначення приватного API - це погана ідея, але в цьому випадку тимчасова ін’єкція для захоплення трасування стека не може бути надто шкідливою.
РЕДАГУВАТИ:
Але ми все ще хочемо знати, що це за дія. Тож я поставив точку зупинки -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
і почав роздруковувати значення регістрів і знайшов клас, що називається, FBSceneImpl
який мав цілу купу інформації про мою програму:
Ми можемо з’ясувати, який приватний метод називається наступним (зберігається в лічильнику програми, вказівнику інструкцій, реєстрі 15.)
Я спробував знайти необроблені FBSceneSnapshotAction
посилання в журналі, але жодних кубиків. Потім я підкласифікував UIAплікацію та перевизначив _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
. Тепер я зміг безпосередньо взяти участь у акції, але все-таки ми не знаємо, що це.
Потім я знову подивився FBSceneSnapshotAction. Виявляється, у нього є суперклас BSAction
.
Потім я написав інструмент, подібний до RuntimeBrowser, і переглянув усі підкласи BSAction. Виявляється, існує цілий їх перелік:
Дві назви методів, які ми маємо (одне з журналу та одне з лічильника програм на пристроях), вказують на те, що ці дії використовуються під капотом для передачі дій навколо системи.
Деякі дії, ймовірно, надсилаються до зворотних викликів делегата програми, тоді як інші обробляються внутрішньо.
Тут відбувається те, що відбувається дія, яка була оброблена неправильно, і система це відзначає. Очевидно, ми не мали це бачити.