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