iOS 10: "[App] Wenn wir uns im echten Pre-Commit-Handler befinden, können wir aufgrund von CA-Einschränkungen keine neuen Zäune hinzufügen."

389

Ich erhalte diese Meldung manchmal in den Protokollen von Xcode 8b3, wenn ich meine App ausführe. Alles scheint zu funktionieren, aber ich würde gerne wissen, woher das kommt. Google hat überhaupt nicht geholfen.

Swalkner
quelle
2
Rufen Sie die UINavigationController-Delegatenmethode auf: fun navigationController (navigationController: UINavigationController, willShowViewController viewController: UIViewController, animiert: Bool) {}?
Norman G
2
willShowViewController wird nie genannt, nein ...
Swalkner
Ich verstehe das gleiche. Ich benutze SpriteKit und SceneKit und vermute sie!
Howard Lovatt
3
Hat jemand einen Fehlerbericht eingereicht? Ich will gerade.
David DelMonte
1
Bitte schauen Sie sich diese Antwort an. stackoverflow.com/a/39997761/6602495
Sneha

Antworten:

285

in deinem Xcode:

  • Klicken Sie direkt neben der Schaltfläche Stopp auf Ihren aktiven Schemanamen
  • Klicken Sie auf Schema bearbeiten ....
  • Wählen Sie unter Ausführen (Debuggen) die Registerkarte Argumente
  • Klicken Sie in Umgebungsvariablen auf +
  • Variable hinzufügen: OS_ACTIVITY_MODE = deaktivieren

Bildschirmfoto

Ed.
quelle
4
Vielen Dank für die zusätzlichen Informationen
Amergin
26
Beachten Sie, dass ich zufällig keine NSLog-Ausgabe an die Konsole gesendet und diese erneut entfernt habe, um das Problem zu beheben. Dies ist eher die 'hochklassige' Programmierung, der wir von den Goons bei Apple ausgesetzt sind.
Amergin
37
Für das, was es wert ist, erhalte ich diese Nachricht, wenn eine Orientierungsänderung vorgenommen wird und ich die Umgebungsvariable OS_ACTIVITY_MODE deaktiviert habe.
user2698617
5
Hinweis: Wenn Sie dies hinzufügen, werden NSLogs auch nicht in der Konsole angezeigt.
niravdesai21
4
Ist das nicht so, als würde man einen Feueralarm ausschalten?
ScottyBlades
191

Es kommt von +[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]via os_log API. Es hängt nicht von anderen Komponenten / Frameworks ab, die Sie verwenden (nur von UIKit) - es wird in einem sauberen Single-View-Anwendungsprojekt reproduziert, wenn die Ausrichtung der Benutzeroberfläche geändert wird.

Diese Methode besteht aus 2 Teilen:

  1. Hinzufügen eines übergebenen Precommit-Handlers zur Liste der Handler;
  2. Führen Sie einige Arbeiten aus, die vom aktuellen Zustand der Zustandsmaschine abhängen.

Wenn der zweite Teil fehlschlägt (sieht nach einem verbotenen Übergang aus), wird die obige Meldung in das Fehlerprotokoll gedruckt. Ich denke jedoch, dass dieses Problem nicht schwerwiegend ist: Es gibt zwei zusätzliche Assert-Fälle in dieser Methode, die zum Absturz beim Debuggen führen.

Scheint, dass Radar das Beste ist, was wir tun können.

Roman Ermolov
quelle
1
Können Sie bitte die Tools erläutern, die Sie zum Debuggen verwendet haben, um diesen privaten Methodennamen und seine Struktur zu erhalten?
Oleksandr Karaberov
9
@AlexanderKaraberov Sie können Hopper Disassembler verwenden, um Warnungstext in Framework-Binärdateien und Verweise auf diesen Text aus einer privaten Methode zu finden.
k06a
Ich erhalte dies auch, wenn die Tastatur einen Bildlauf durchführt und ich einen Controller abonniert habe, der darauf reagiert, indem er die Größe seiner Ansichten ändert.
yo.ian.g
82

Versuchen Sie, Folgendes in das environment variablesfür das Schema unter zu setzenrun(debug)

OS_ACTIVITY_MODE = disable
Nick Peachey
quelle
Ich habe dies im Simulator erhalten, als ich das iPhone 7 über die Menüpunkte Hardware-> Drehen drehte. Diese Umgebungsvariable ließ die falsche Nachricht verschwinden.
George D Girton
1
Die Antwort von @Foo unten ist nützlich, da sie die Anleitungen enthält.
Kevin Owens
1
Es wird auch nicht das Einschränkungswarnprotokoll gedruckt
chirag shah
36
OP fragte, woher die Nachricht komme. Nur zu sagen, wie man es zum Schweigen bringt, ist nicht die richtige Antwort.
iCaramba
6
Die Antwort "IOS_ACTIVITY_MODE = disable" deaktiviert die ALLE Protokollierung! Schließen Sie einfach die Protokollierungsansicht, wenn Sie das Protokoll nicht sehen möchten. Wirklich lächerliche Antwort, erstaunlich, dass es so viele Stimmen hat! Tut nichts, um die eigentliche Nachricht zu adressieren. Unsere Apps, die stark Kerndaten verwenden, funktionieren einwandfrei. Diese und andere Nachrichten werden nach einem der letzten Xcode-Updates angezeigt. Schade, dass Apple diese Art von Problemen nicht lösen kann.
John
13

Wir können es auf diese Weise stummschalten (Gerät und Simulator benötigen unterschiedliche Werte):

Fügen Sie den Namen OS_ACTIVITY_MODEund den Wert hinzu ${DEBUG_ACTIVITY_MODE}und überprüfen Sie ihn (unter Produkt -> Schema -> Schema bearbeiten -> Ausführen -> Argumente -> Umgebung).

Geben Sie hier die Bildbeschreibung ein

In Benutzerdefinierte Einstellung DEBUG_ACTIVITY_MODE, dann fügen Sie Any iOS Simulator SDKfür Debugund seinen Wert setzen disable(im Projekt -> Build - Einstellungen -> + -> Benutzerdefinierte Einstellung)

Geben Sie hier die Bildbeschreibung ein

Igor
quelle
Hat bei mir nicht funktioniert: Ich sehe dies auch in der Konsole, obwohl der Debug-Aktivitätsmodus wie oben vorgeschlagen bereits deaktiviert wurde.
Johan
-1

Zur Behebung habe ich die App aus Simulator gelöscht.

Ich habe auch zuerst Clean ausgeführt .

Ich glaube nicht, dass irgendetwas Orientierungsbezogenes es ausgelöst hat. Das größte Problem, das sich vor Beginn dieses Symptoms geändert hat, ist, dass ein Swift-Framework NSLogWorker-Threads anstelle des Haupt-Threads aufruft .

Jeff
quelle
1
Das Reinigen funktionierte zunächst einwandfrei, als ich es im Simulator ausführte, ohne es zu drehen, aber sobald ich es erneut mit einem Rotationsbefehl testete, wurde der gleiche Fehler gemeldet.
Cheznead
Ich verwende Schwenkgesten und erhalte diesen Fehler nur, wenn ich die Ausrichtung ändere.
Jeremy Andrews
-8
OS_ACTIVITY_MODE = disable

Dadurch wird auch die Möglichkeit zum Debuggen in realen Geräten deaktiviert (von da an keine Konsolenausgabe von realen Geräten).

irgendwie
quelle
6
Sie haben gerade eine frühere Antwort (mit weniger Details) kopiert
Ashley Mills
2
eigentlich hilft die TL; DR.
Juan Je García