В вашем коде нет ничего плохого. Это внутреннее сообщение журнала Apple, и вы должны сообщить об этом.
Есть два подсказки, которые показывают, что это, вероятно , код Apple:
Подчеркивание перед именем метода _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
является соглашением, указывающим, что метод является частным / внутренним по отношению к классу, в котором он объявлен. (См. Этот комментарий .)
Разумно предположить, что двухбуквенный префикс в FBSSceneSnapshotAction
является сокращением для FrontBoard, который, согласно Рене Ричи в « iOS 9 wish-list: Guest Mode», является частью всего семейства программного обеспечения, связанного с запуском приложений:
В iOS 8 Apple переделала свой системный менеджер SpringBoard на несколько более мелких и более сфокусированных компонентов. В дополнение к BackBoard, который уже был выделен для обработки фоновых задач, они добавили Frontboard для задач переднего плана. Они также добавили PreBoard для обработки экрана блокировки в безопасных зашифрованных условиях. [...]
Понятия не имею, для чего BS
нужен префикс BSSettings
, но
BS
является сокращением для BackBoard Settings
, и анализ этого сообщения журнала покажет, что это не то, что вы делали, и вам следует заполнить радар с шагами для воспроизведения сообщения журнала.
Если вы хотите попытаться получить трассировку стека, вы можете реализовать категорию, указанную здесь . Некоторые утверждают, что переопределение частного API - плохая идея, но в этом случае временная инъекция для захвата трассировки стека не может быть слишком вредной.
РЕДАКТИРОВАТЬ:
Но мы все еще хотим знать, что это за действие. Итак, я поставил точку останова -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
и начал распечатывать значения регистров и нашел класс с именем, у FBSceneImpl
которого была целая куча информации о моем приложении:
Мы можем узнать, какой закрытый метод вызывается следующим (хранится в счетчике программы, указателе инструкции, регистре 15.)
Я попытался найти необработанные, FBSceneSnapshotAction
упомянутые в журнале, но без кубиков. Затем я разделил UIApplication на подклассы и переопределил _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
. Теперь я мог напрямую перейти к действию, но до сих пор мы не знаем, что это такое.
Затем я снова посмотрел на FBSceneSnapshotAction. Оказывается, у него есть суперкласс BSAction
.
Затем я написал инструмент, похожий на RuntimeBrowser, и просмотрел все подклассы BSAction. Оказывается, их довольно много:
Два имени методов, которые у нас есть (одно из журнала и одно из счетчика программ на устройствах), указывают на то, что эти действия используются для передачи действий по системе.
Некоторые действия, вероятно, отправляются обратным вызовам делегата приложения, в то время как другие обрабатываются внутри.
Здесь происходит действие, которое не было обработано правильно, и система это замечает. Очевидно, мы не должны были этого видеть.