오류 : iOS9의 _handleNonLaunchSpecificActions


157

iOS 9에서 다음 오류가 발생합니다.

    -[UIApplication_handleNonLaunchSpecificActions:
      forScene:
      withTransitionContext:
      completion:] unhandled action -> 
      <FBSSceneSnapshotAction: 0x150b2aef0> 
       {
            handler          = remote;
            info = <BSSettings: 0x15333f650> 
            {
                (1) = 5;
            };
        }

다른 사람 이이 오류를 겪었습니까? 뭐가 잘못 되었 니?


6
여전히 iOS9 베타 버전 출시 중입니다. 문제가 무엇이며 그 의미를 이해하는 것이 좋습니다.
Roddy

11
내 앱이 실행될 때 iPhone을 잠글 때도 같은 문제가 있습니다. iOS 9.0, XCode 7.0.
NKorotkov

5
Xcode 7로 작성된 새로운 프로젝트 에이 정확한 문제가 있기 때문에 Apple 버그 인 것 같습니다.
Hongfei

12
Apple 개발자 포럼에서 논의한 장점이 있습니까? "애플이 원하지 않으면 왜 그렇게하겠습니까?"와 함께 어떤 종류의 버그도 사라지는 것 같습니다. 문제를 해결하려고 할 때 절망의 마지막 중지입니다.
Roddy

11
질문 stackoverflow.com/questions/32658037/…을 참조하십시오 -동일한 문제에 대해 설명합니다.
iPhone Guy

답변:


10

코드에는 아무런 문제가 없습니다. 이것은 Apple 내부의 로깅 메시지이므로 이에 대한 레이더를 제출해야합니다.

이것이 아마도 Apple의 코드 임을 보여주는 두 가지 힌트가 있습니다.

  1. 메소드 이름의 밑줄 _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion은 메소드가 선언 된 클래스에 대해 개인 / 내부임을 나타내는 규칙입니다 ( 이 주석 참조 ).

  2. 두 글자 접두사가 FBSSceneSnapshotAction" iOS 9 희망 목록 : 게스트 모드"의 Rene Ritchie에 따르면 앱 시작과 관련된 전체 소프트웨어 제품군의 일부인 Rene Ritchie에 따르면 가 FrontBoard의 축약 형 입니다.

iOS 8을 통해 Apple은 시스템 관리자 SpringBoard를 더 작고 집중적 인 여러 구성 요소로 리팩토링했습니다. 백그라운드 작업을 처리하기 위해 이미 분리 된 BackBoard 외에도 포 그라운드 작업을 위해 Frontboard를 추가했습니다. 또한 안전한 암호화 된 조건에서 잠금 화면을 처리하기 위해 PreBoard를 추가했습니다. [...]

BS접두사가 무엇인지 전혀 모른다BSSettings 못하지만이 로그 메시지를 분석하면 그것이 수행 한 것이 아니라는 것을 나타내므로 로깅 메시지를 재현하는 단계가있는 레이더를 제출해야합니다.

스택 추적을 시도하고 싶다면 여기에 링크 된 범주를 있습니다 . 일부는 개인 API를 재정의하는 것이 좋지 않다고 주장하지만이 경우 스택 추적을 잡기위한 임시 주입은 너무 해가 될 수 없습니다.

편집하다:

그러나 우리는 여전히이 행동이 무엇인지 알고 싶습니다. 그래서 중단 점을 설정 -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]하고 레지스터 값을 인쇄하기 시작했고 FBSceneImpl내 응용 프로그램에 대한 많은 정보를 가진 클래스를 찾았습니다 .

장면

다음에 호출 할 개인 메소드를 찾을 수 있습니다 (프로그램 카운터에 저장, 등록 15).

프로그램 카운터

처리되지 않은 것을 찾으려고 노력했습니다. FBSceneSnapshotAction로그에서 참조를 했지만 주사위는 없습니다. 그런 다음 UIApplication을 서브 클래스 화하고 overrode했습니다 _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion. 이제 직접 조치를 취할 수 있었지만 여전히 그 조치가 무엇인지 모릅니다.

그런 다음 FBSceneSnapshotAction을 다시 살펴 보았습니다. 슈퍼 클래스가 있다고 밝혀졌습니다.BSAction .

그런 다음 RuntimeBrowser 와 유사한 도구작성 하고 BSAction의 모든 하위 클래스를 찾아 보았습니다. 그것들의 목록이 상당히 있음이 밝혀졌습니다.

액션리스트

우리가 가지고있는 두 가지 메소드 이름 (하나는 로그에서, 다른 하나는 장치의 프로그램 카운터에서)은 이러한 조치가 시스템에서 조치를 전달하기 위해 후드 아래에서 사용됨을 나타냅니다.

일부 작업은 아마도 앱 대리자의 콜백으로 전송되는 반면 다른 작업은 내부적으로 처리됩니다.

여기서 일어나는 일은 올바르게 처리되지 않은 조치가 있고 시스템이이를 인식하고 있다는 것입니다. 우리는 그것을 보지 말아야했습니다.


미안하지만 이것은 실제로 답이 아닙니다. 다음 의견 중 더 많은 것. 코드는 Apple의 내부 오류와 매우 유사하지만 문제는 아닙니다. 추측은 실제로 해결책이 아니며 제공된 iOS8 설명은 오류가 iOS9에만 나타났기 때문에 관련이 없습니다 (iOS8에서는 발생하지 않음).
Roddy

2
"무엇인가"에 대한 대답은 SpringBoard 내부의 어떤 것이 스냅 샷 작업을 처리하지 않았다는 것입니다. 이것이 바로 로깅 메시지입니다. 애플 이외의 다른 사람이 당신에게 말할 수있는 것은 거의 없습니다.
Moshe

이 로깅 메시지가 iOS 8에 나타나지 않았다는 사실은 실제로 관련이 없습니다. 레이더와 함께 제출해야하는 길 잃은 로깅 메시지입니다.
Moshe

나는 오늘 아침 누군가 누군가 내 질문을 업데이트했고 그것이 내가 원래 요청한 것이 아니라는 것을 알았습니다. 그래서 약간의 연결이 끊어졌습니다. 다른 사람이 질문을 업데이트 할 수 있다는 것도 몰랐습니다.
Roddy

원래 질문에 대답하려면 레이더를 제출하십시오.
Moshe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.