iOS 10: "[App] se siamo nel vero gestore pre-commit non possiamo effettivamente aggiungere nuovi recinti a causa della limitazione della CA”


389

A volte ricevo questo messaggio nei registri di Xcode 8b3 quando eseguo la mia app, tutto sembra funzionare, ma mi piacerebbe sapere da dove proviene. Google non ha aiutato affatto.


2
Stai chiamando il metodo delegato UINavigationController: divertente navigationController (navigationController: UINavigationController, willShowViewController viewController: UIViewController, animato: Bool) {}?
Norman G,

2
willShowViewController non viene mai chiamato, no ...
swalkner,

Ho lo stesso. Sto usando SpriteKit e SceneKit e li sospetto!
Howard Lovatt,

3
Qualcuno ha segnalato un bug? Sto per.
David DelMonte,

1
Dai un'occhiata a questa risposta. stackoverflow.com/a/39997761/6602495
Sneha,

Risposte:


285

nel tuo Xcode:

  • Fai clic sul nome del tuo schema attivo proprio accanto al pulsante Stop
  • Fai clic su Modifica schema ....
  • in Esegui (debug) selezionare la scheda Argomenti
  • in Variabili d'ambiente fai clic su +
  • aggiungi variabile: OS_ACTIVITY_MODE = disabilita

immagine dello schermo


4
Grazie per le informazioni aggiuntive
amergin

26
Tieni presente che non ho ricevuto casualmente nessun output NSLog sulla console e l'ho rimosso di nuovo per risolverlo. Questa è più della programmazione "di alta classe" a cui siamo sottoposti dai goon di apple.
amergin

37
Per quello che vale, ricevo questo messaggio ogni volta che viene fatta una modifica dell'orientamento e ho la variabile d'ambiente OS_ACTIVITY_MODE disabilitata.
user2698617

5
Nota: aggiungendo questo non vedrai NSLogs anche nella console.
niravdesai21,

4
Non è come disattivare un allarme antincendio?
ScottyBlades,

191

Viene da +[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]via os_log API. Non dipende da altri componenti / framework che si stanno utilizzando (solo da UIKit) - si riproduce in un progetto di applicazione a vista singola pulito sulla modifica dell'orientamento dell'interfaccia.

Questo metodo è composto da 2 parti:

  1. aggiunta del gestore precommit passato all'elenco dei gestori;
  2. fare un po 'di lavoro, che dipende dallo stato attuale della macchina a stati finiti.

Quando la seconda parte fallisce (sembra una transizione proibita), stampa il messaggio sopra nel registro degli errori. Tuttavia, penso che questo problema non sia fatale: ci sono 2 ulteriori casi di asserzione in questo metodo, che porteranno al crash nel debug.

Sembra che il radar sia il migliore che possiamo fare.


1
Puoi, per favore, approfondire gli strumenti che hai usato per il debug per ottenere questo nome di metodo privato e la sua struttura?
Oleksandr Karaberov,

9
@AlexanderKaraberov è possibile utilizzare Hopper Disassembler per trovare il testo di avviso nel binario del framework e i riferimenti a questo testo dal metodo privato.
k06a,

Ho anche questo quando la tastiera scorre e ho un controller sottoscritto per rispondere ridimensionando le sue visualizzazioni.
yo.ian.g

82

Prova a inserire quanto segue in environment variablesper lo schema sottorun(debug)

OS_ACTIVITY_MODE = disable

Ho trovato questo nel simulatore quando ruotavo l'iPhone 7 usando le voci di menu hardware-> ruota. Questa variabile d'ambiente ha fatto sparire il messaggio spurio.
George D Girton,

1
La risposta di @Foo di seguito è utile perché include i dettagli di procedura.
Kevin Owens,

1
Inoltre, non stampa il registro degli avvisi sui vincoli
chirag shah,

36
OP ha chiesto da dove proviene il messaggio. Solo dire come silenziare non è la risposta giusta.
iCaramba,

6
La risposta "IOS_ACTIVITY_MODE = disable" disattiva TUTTA la registrazione! Chiudi la vista di registrazione se non vuoi vedere il registro. Risposta davvero ridicola, incredibile che abbia così tanti voti! Non fa nulla per indirizzare il messaggio reale. Le nostre app che utilizzano pesantemente i dati di base funzionano bene, questi messaggi e altri hanno iniziato a comparire dopo uno degli ultimi aggiornamenti Xcode. Triste che Apple non riesca a risolvere questo tipo di problemi.
Giovanni,

13

Possiamo silenziarlo in questo modo (dispositivo e simulatore necessitano di valori diversi):

Aggiungi il nome OS_ACTIVITY_MODEe il valore ${DEBUG_ACTIVITY_MODE}e controllalo (in Prodotto -> Schema -> Modifica schema -> Esegui -> Argomenti -> Ambiente).

inserisci qui la descrizione dell'immagine

Aggiungere Impostazione definito dall'utente DEBUG_ACTIVITY_MODE, quindi aggiungere Any iOS Simulator SDKper Debuge impostare il suo valore a disable(in Project -> impostazioni di generazione -> + -> Impostazioni Definito dall'utente)

inserisci qui la descrizione dell'immagine


Non ha funzionato per me: lo vedo anche nella console, nonostante abbia già disabilitato la modalità attività di debug come suggerito sopra.
Johan

-1

Per risolvere, ho eliminato l'app dal simulatore.

Ho anche eseguito Clean per primo.

Non credo che sia stato innescato da alcun elemento legato all'orientamento. La cosa più grande che è cambiata prima dell'inizio di questo sintomo è che un framework Swift ha iniziato a chiamare NSLogthread di lavoro anziché thread principale.


1
Facendo una pulizia ha funzionato bene all'inizio per me quando l'ho eseguito nel simulatore senza ruotarlo, ma non appena ho provato di nuovo con un comando di rotazione, ha riportato lo stesso errore.
Cheznead,

Sto usando i gesti di panoramica e ottengo questo errore solo quando cambio orientamento.
Jeremy Andrews,

-8
OS_ACTIVITY_MODE = disable

Ciò disabiliterà anche la possibilità di eseguire il debug in dispositivi reali (nessun output della console da dispositivi reali da quel momento in poi).


6
Hai appena copiato una risposta precedente (con meno dettagli)
Ashley Mills,

2
in realtà il TL; DR aiuta.
Juan Je García,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.