코드에 문제가 없습니다. 이것은 Apple 내부의 로깅 메시지이며 이에 대한 레이더를 제출해야합니다.
이것이 아마도 Apple의 코드 임을 보여주는 두 가지 힌트가 있습니다.
메서드 이름 앞의 밑줄 _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
은 메서드가 선언 된 클래스에 대해 비공개 / 내부임을 나타내는 규칙입니다. ( 이 주석 참조 )
FBSSceneSnapshotAction
Rene Ritchie에 따르면 " iOS 9 위시리스트 : 게스트 모드"의 Rene Ritchie는 앱 실행과 관련된 전체 소프트웨어 제품군의 일부인 FrontBoard 의 두 글자 접두사 가 속기 라고 추측하는 것이 합리적 입니다.
iOS 8을 통해 Apple은 시스템 관리자 인 SpringBoard를 더 작고 집중된 여러 구성 요소로 리팩토링했습니다. 백그라운드 작업을 처리하기 위해 이미 분리 된 BackBoard 외에도 전경 작업을 위해 Frontboard를 추가했습니다. 또한 안전하고 암호화 된 조건에서 잠금 화면을 처리하기 위해 PreBoard를 추가했습니다. [...]
BS
접두사가 무엇인지 BSSettings
모르겠지만
BS
는의 약어이며이 BackBoard Settings
로그 메시지를 분석하면 사용자가 수행 한 작업이 아님을 나타내므로 로깅 메시지를 재현하는 단계와 함께 레이더를 제출해야합니다.
스택 추적을 시도하고 싶다면 여기에 링크 된 카테고리를 구현할 수 있습니다 . 일부는 비공개 API를 재정의하는 것이 좋지 않다고 주장하지만이 경우 스택 추적을 가져 오기위한 임시 주입은 너무 해로울 수 없습니다.
편집하다:
그러나 우리는 여전히이 행동이 무엇인지 알고 싶습니다. 그래서 중단 점을 설정 -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
하고 레지스터 값을 인쇄하기 시작했고 FBSceneImpl
내 응용 프로그램에 대한 전체 정보가 포함 된 클래스를 찾았습니다 .
다음에 어떤 private 메서드가 호출되는지 알 수 있습니다 ( 프로그램 카운터, 명령 포인터, 레지스터 15에 저장 됨).
나는 FBSceneSnapshotAction
로그에서 언급 된 처리되지 않은 것을 찾으려고 했지만 주사위는 없었다. 그런 다음 UIApplication을 서브 클래 싱하고 _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
. 이제 나는 직접 행동을 취할 수 있었지만 여전히 그것이 무엇인지 모릅니다.
그런 다음 FBSceneSnapshotAction을 다시 살펴 보았습니다. 라는 수퍼 클래스가 BSAction
있습니다.
그런 다음 RuntimeBrowser 와 유사한 도구 를 작성 하고 BSAction의 모든 하위 클래스를 검색했습니다. 꽤 많은 목록이 있음이 밝혀졌습니다.
우리가 가지고있는 두 가지 메서드 이름 (하나는 로그에서, 하나는 장치의 프로그램 카운터에서)은 이러한 작업이 시스템 전체에 작업을 전달하기 위해 내부적으로 사용된다는 것을 나타냅니다.
일부 작업은 앱 델리게이트의 콜백으로 전송되는 반면 다른 작업은 내부적으로 처리됩니다.
여기서 일어나는 일은 올바르게 처리되지 않은 작업이 있고 시스템이이를 인식하고 있다는 것입니다. 분명히 우리는 그것을 볼 수 없었습니다.