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.
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.
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:
Hinzufügen eines übergebenen Precommit-Handlers zur Liste der Handler;
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.
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)
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).
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)
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 .
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).
willShowViewController
wird nie genannt, nein ...Antworten:
in deinem Xcode:
quelle
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:
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.
quelle
Versuchen Sie, Folgendes in das
environment variables
für das Schema unter zu setzenrun(debug)
quelle
Wir können es auf diese Weise stummschalten (Gerät und Simulator benötigen unterschiedliche Werte):
Fügen Sie den Namen
OS_ACTIVITY_MODE
und den Wert hinzu${DEBUG_ACTIVITY_MODE}
und überprüfen Sie ihn (unter Produkt -> Schema -> Schema bearbeiten -> Ausführen -> Argumente -> Umgebung).In Benutzerdefinierte Einstellung
DEBUG_ACTIVITY_MODE
, dann fügen SieAny iOS Simulator SDK
fürDebug
und seinen Wert setzendisable
(im Projekt -> Build - Einstellungen -> + -> Benutzerdefinierte Einstellung)quelle
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
NSLog
Worker-Threads anstelle des Haupt-Threads aufruft .quelle
Dadurch wird auch die Möglichkeit zum Debuggen in realen Geräten deaktiviert (von da an keine Konsolenausgabe von realen Geräten).
quelle