¿Qué es TIC Read Status 1:57 en iOS11 / Xcode 9?

158

Después de actualizar a Xcode 9, usando Swift 3 y el simulador de iPhone X, mi consola está llena de:

TIC Read Status [11:0x0]: 1:57
TIC Read Status [11:0x0]: 1:57
TIC Read Status [11:0x0]: 1:57
...

¿Qué es eso y cómo lo soluciono? La ayuda es muy apreciada.

PD: Prefiero no simplemente "silenciarlo" con un Environment Variableesquema de compilación.

David Seek
fuente
1
Posible duplicado de stackoverflow.com/questions/40226104/…
timgcarlson
55
bien. He encontrado este hilo también. pero es osx, viejo y realmente no respondió ...
David Seek
¿Encontraste una solución todavía?
Khodour.F
2
lo molesto no es que esto
inicie
1
si lo hace pero solo en modo de depuración por lo que he notado.
David Seek

Respuestas:

182

El personal de Apple dio la siguiente respuesta:

TIC se expande a "conexión de E / S TCP", que es un subsistema dentro de CFNetwork que ejecuta una conexión TCP

1y 57son el dominio y el código CFStreamError, respectivamente; un dominio de 1 es kCFStreamErrorDomainPOSIX y, dentro de ese dominio, 57es ENOTCONN

En resumen, una lectura TCP ha fallado con ENOTCONN.

Como el subsistema de conexión TCP I / O no tiene una API pública, necesariamente debe estar usándolo a través de algún contenedor de alto nivel (como NSURLSession).

fuente: https://forums.developer.apple.com/thread/66058

EDITAR / ACTUALIZAR:

Como todavía tenemos estos registros molestos, le pregunté al mismo especialista de Apple desde el enlace anterior sobre nuestra situación , que ahora es específica para Xcode 9 y Swift 4. Aquí está:

Mucha gente se queja de estos registros, que también tengo en todas mis aplicaciones desde que actualicé a Xcode 9 / iOS 11.

2017-10-24 15:26:49.120556-0300 MyApp[1092:314222] TIC Read Status [55:0x0]: 1:57  
2017-10-24 15:26:49.120668-0300 MyApp[1092:314222] TIC Read Status [55:0x0]: 1:57  
2017-10-24 15:26:49.626199-0300 MyApp[1092:314617] TIC Read Status [56:0x0]: 1:57

Su respuesta:

Es importante darse cuenta de que este ENOTCONN no significa necesariamente que algo haya salido mal. Se esperan conexiones TCP cerradas en todas las versiones de HTTP. Entonces, a menos que haya algún otro síntoma asociado con este error, mi recomendación es que lo ignore.

fuente: https://forums.developer.apple.com/message/272678#272678

SOLUCIÓN: solo espere las nuevas versiones / actualizaciones de Xcode 9.

rgoncalv
fuente
30
Esto no es específico de Swift. Lo estoy obteniendo con Objectiv-C también.
Victor Engel
8
Realmente hiciste todo lo posible para obtener esta respuesta
G. LC
77
Su solución parece no haber funcionado, ya que todavía está allí en XCode10.
Gennadii Tsypenko el
2
tenemos que encontrar una manera de deshacernos de esto, porque la impresión de registros afecta el rendimiento de la aplicación durante el tiempo de ejecución, por ahora podemos esperar que para las compilaciones que no sean #DEBUG esto no se imprima
Stoyan
66
sería bueno tener algunos ajustes, por lo que podríamos "ignorarlo"
Zaporozhchenko Oleksandr
40

Así es como TIC Read Status [11:0x0]: 1:57se descompone:

TIC se expande a "conexión de E / S TCP", que es un subsistema dentro de CFNetwork que ejecuta una conexión TCP

11 es un número de ID de conexión dentro de TIC

0x0 es un puntero al objeto TIC en sí

1y 57son el dominio y el código CFStreamError, respectivamente; un dominio de 1 es kCFStreamErrorDomainPOSIX y, dentro de ese dominio, 57 es ENOTCONN

Fuente: https://forums.developer.apple.com/thread/66058

0rt
fuente
bueno. Hasta aquí todo bien. ¿Es algo malo o simplemente una información? ¿Necesito arreglar algo?
David Seek
Creo que tiene algo que ver con iOS11.0 y podría corregirse en futuras versiones
0rt
8
Pero, ¿por qué está sucediendo realmente? ¿Y por qué comenzó de repente con iOS 11?
Lane Rettig
También recibo un montón de ellos en mi registro, pero todas mis llamadas de red funcionan bien: L
El mismo problema, ¿qué debo hacer con esto?
Genevios
35

Nota: Al igual que lo que @David mencionó en el comentario, es una forma de ocultar las advertencias, así que use este argumento de inicio para evitar recibir muchos mensajes repetitivos y tener una consola limpia. Una vez finalizada la depuración, manténgala deshabilitada ya que la consola no proporciona información útil cuando está habilitada. Por ejemplo libc++abi.dylib: terminating with uncaught exception of type NSException.

Para las personas que se preguntan cómo silenciar la advertencia y hasta que esté disponible una mejor solución, puede seguir la variable a mano y alternar según sea necesario.

Utilice OS_ACTIVITY_MODE = disablela variable de entorno bajo Argumentos en los esquemas del producto para evitar que la consola se inunde con tales advertencias.

Nota B: habilítelo para ver el efecto.

Fuente: https://medium.com/@adinugroho/disable-os-logging-in-xcode-8-ec6d38502532

ingrese la descripción de la imagen aquí

lal
fuente
13
También he dicho literalmente, que no quiero su opción ^^ Solo silenciarla no elimina el problema.
David Seek
23
Las personas deben dejar de sugerir que deshabiliten todas las declaraciones de registro. Respuestas como esta deberían eliminarse.
Claus Jørgensen
6

La mejor manera que encontré, con respecto a este mensaje de registro y algunos otros (como los errores de NSURLSession que no son necesariamente errores) es tener mis propias funciones de registro.

class Logger {
    static var project: String = "MyProject"

    static func log(_ string: String, label: String = "") {
        DispatchQueue.main.async {
            print("[\(Logger.project)] \(label) : \(string)")
        }
    }

    static func info(_ string: String) {
        Logger.log(string)
    }

    static func warning(_ string: String) {
        Logger.log(string, label: "WARNING")
    }

    static func error(_ string: String) {
        Logger.log(string, label: "ERROR")
    }
}

Luego simplemente escribo [MyProject] en el filtro inferior derecho del panel de la consola, y eso es todo.

Tenga en cuenta que al llamar a print en la cola principal, permite que su registrador se use desde hilos sin mezclar su consola.

Listo para ser mejorado y ajustado para sus necesidades :)

Alce
fuente
marque "os_log". esta es la forma en que Apple recomienda usar con el registro avanzado
user1105951
0

Estaba teniendo este mismo problema cuando obtenía '}' en respuesta a un servicio REST (GET).

Utilizando:

URLCache.shared.removeCachedResponse(for: request as URLRequest)

después de hacer mi solicitud de URL y restablecer mi objeto URLSession después de obtener la respuesta como:

session.reset(completionHandler: {
  // print(\(data))                          
})

Resuelto mi problema

Anuj Nigam
fuente
1
No resolverá mi problema, ya que esto incluso sucede si todo lo que hace mi aplicación es llamar a Firebase. Y no puedo manipular el marco. Pero enviaré esto al equipo de desarrollo de Firebase. Quizás puedan hacer algo al respecto.
David Seek
0

Logramos resolver este problema de registro deshabilitando HTTP / 2 en el servidor web, en nuestro caso hemos migrado de ELB clásico a ELB de aplicación que agregó soporte a HTTP / 2 en AWS y comenzamos a obtener "Estado de lectura de TIC [11: 0x0 ]: 1:57 "en la consola XCode 10.1 / iOS 12. Esto parece una solución temporal hasta que Apple solucione el problema con HTTP / 2, si lo hay. Es posible que esta solución no funcione para todos, especialmente si está utilizando API de terceros, pero le brinda algunas ideas sobre el problema.

Starkode
fuente
44
Bueno, han pasado 1,5 años desde que Apple introdujo esta ... llamémosla ... característica ... No veo que esto se "arregle" en el corto plazo.
David Seek
0

Es un registro que indica que una conexión TCP está perdida / cerrada / no válida o lo que sea. Esto puede suceder si su aplicación tiene una conexión tcp en ejecución y la aplicación se pone en segundo plano durante algún tiempo, o si apaga la pantalla de su teléfono. El sistema operativo decide detener la mayor cantidad de recursos posible para reducir el drenaje de la batería. Si pone la aplicación en primer plano, las conexiones tcp que tenía antes ya no funcionarán. Necesita recrear una nueva conexión tcp.

Si no te molesta, simplemente ignóralo.

Andaluz
fuente