iOS 10 : "[App] 실제 사전 커밋 처리기에 있으면 CA 제한으로 인해 실제로 새 펜스를 추가 할 수 없습니다"


389

앱을 실행할 때 Xcode 8b3의 로그 에이 메시지가 표시되는 경우가 있지만 모든 것이 작동하는 것처럼 보이지만 어디에서 왔는지 알고 싶습니다. 구글은 전혀 도움이되지 않았다.


2
UINavigationController 대리자 메서드를 호출하고 있습니까? fun navigationController (navigationController : UINavigationController, willShowViewController viewController : UIViewController, animated : Bool) {}?
Norman G

2
willShowViewController 결코 호출되지 않습니다 ...
swalkner

나도 똑같아 SpriteKit 및 SceneKit을 사용하고 있으며 의심합니다!
Howard Lovatt

3
누구든지 버그 신고를합니까? 할 예정이야.
David DelMonte

1
이 답장을보십시오. stackoverflow.com/a/39997761/6602495
Sneha

답변:


285

Xcode에서 :

  • 중지 버튼 옆에있는 활성 체계 이름을 클릭하십시오.
  • 구성표 편집 ...을 클릭하십시오.
  • Run (Debug)에서 Arguments 탭을 선택하십시오.
  • 환경 변수에서 +를 클릭하십시오.
  • 변수 추가 : OS_ACTIVITY_MODE = 사용 안함

스크린 샷


4
추가 정보에 감사드립니다
amergin

26
콘솔에 NSLog 출력이 무작위로 표시되지 않았 으며이 문제를 해결하기 위해 다시 제거했습니다. 이것은 애플의 goons에 의해 적용되는 '고급'프로그래밍에 가깝습니다.
amergin

37
가치가있는 방향으로 방향을 변경할 때 마다이 메시지가 표시되고 OS_ACTIVITY_MODE 환경 변수가 비활성화되어 있습니다.
user2698617

5
참고 : 이것을 추가하면 콘솔에도 NSLog가 표시되지 않습니다.
niravdesai21

4
화재 경보기를 끄는 것과 같지 않습니까?
ScottyBlades

191

+[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]os_log API 를 통해 제공됩니다. 사용중인 다른 구성 요소 / 프레임 워크 (UIKit에서만)에 의존하지 않습니다-인터페이스 방향 변경에 대한 깨끗한 단일 뷰 응용 프로그램 프로젝트를 재현합니다.

이 방법은 두 부분으로 구성됩니다.

  1. 전달 된 프리 커밋 핸들러를 핸들러 목록에 추가;
  2. 현재 유한 상태 머신 상태에 따라 일부 작업을 수행하십시오.

두 번째 부분이 실패하면 (금지 된 전환처럼 보임) 위의 메시지를 오류 로그에 인쇄합니다. 그러나이 문제는 치명적이지 않다고 생각합니다.이 방법에는 두 가지 추가 주장 사례가 있으며 디버그로 인해 충돌이 발생합니다.

레이더가 우리가 할 수있는 최선이라고 생각합니다.


1
이 개인 메소드 이름과 구조를 얻기 위해 디버깅에 사용한 도구에 대해 자세히 설명해 주시겠습니까?
Oleksandr Karaberov

9
@AlexanderKaraberov Hopper Disassembler를 사용하여 프레임 워크 바이너리에서 경고 텍스트를 찾고 개인 메서드 에서이 텍스트에 대한 참조를 찾을 수 있습니다.
k06a

키보드가 스크롤 될 때이 정보를 얻었으며 컨트롤러의 뷰 크기를 조정하여 응답했습니다.
yo.ian.g

82

environment variables아래 계획에 대해 다음을 입력하십시오.run(debug)

OS_ACTIVITY_MODE = disable

하드웨어-> 회전 메뉴 항목을 사용하여 iPhone 7을 회전 할 때 시뮬레이터에서 이것을 얻었습니다. 이 환경 변수로 인해 가짜 메시지가 사라졌습니다.
George D Girton

1
아래 @Foo의 답변은 사용법 정보가 포함되어 있으므로 유용합니다.
Kevin Owens

1
또한 제약 경고 로그를 인쇄하지 않습니다
chirag shah

36
OP는 메시지의 출처를 물었습니다. 침묵하는 법을 말하는 것만으로는 정답이 아닙니다.
iCaramba

6
"IOS_ACTIVITY_MODE = disable"응답은 모든 로깅을 끕니다! 로그를 보지 않으려면 로깅보기를 닫으십시오. 정말 터무니없는 답변, 너무 많은 투표가 있다는 놀라운! 실제 메시지를 해결하기 위해 아무것도하지 않습니다. 핵심 데이터를 많이 사용하는 우리의 앱은 정상적으로 작동하며, 이러한 메시지 및 기타 메시지는 마지막 Xcode 업데이트 중 하나 후에 나타납니다. 애플이 이런 종류의 문제를 해결할 수 없다는 것은 안타깝습니다.
John

13

이 방법으로 뮤트 할 수 있습니다 (장치와 시뮬레이터는 다른 값이 필요합니다).

이름 OS_ACTIVITY_MODE과 값을 추가 ${DEBUG_ACTIVITY_MODE}하고 확인하십시오 (제품-> 구성표-> 구성표 편집-> 실행-> 인수-> 환경에서).

여기에 이미지 설명을 입력하십시오

사용자 정의 설정을 추가 DEBUG_ACTIVITY_MODE추가 한 후, Any iOS Simulator SDK대한 Debug과에의 값을 설정 disable(프로젝트에서 -> 빌드 설정 -> + -> 사용자 정의 설정)

여기에 이미지 설명을 입력하십시오


나를 위해 작동하지 않았다 : 위에서 제안한 것처럼 디버그 활동 모드를 이미 비활성화 했음에도 불구하고 콘솔에서 이것을보고 있습니다.
Johan

-1

문제를 해결하기 위해 시뮬레이터에서 앱을 삭제했습니다.

또한 Clean을 먼저 실행했습니다 .

나는 방향과 관련된 것이 그것을 유발했다고 생각하지 않습니다. 이 증상이 시작되기 전에 가장 큰 변화는 Swift 프레임 워크 NSLog가 메인 스레드 대신 작업자 스레드를 호출하기 시작했습니다 .


1
시뮬레이터를 회전시키지 않고 시뮬레이터에서 실행했을 때 처음에는 깨끗하게 작동했지만 회전 명령으로 다시 테스트하자마자 동일한 오류 가보고되었습니다.
cheznead

팬 제스처를 사용하고 방향을 변경할 때만이 오류가 발생합니다.
Jeremy Andrews

-8
OS_ACTIVITY_MODE = disable

또한 실제 장치에서 디버깅 할 수 없게됩니다 (실제 장치의 콘솔 출력은 해당 없음).


6
방금 이전 답변을 자세하게 복사했습니다
Ashley Mills

2
실제로 TL; DR이 도움이됩니다.
Juan Je García
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.