O que é o TIC Read Status 1:57 no iOS11 / Xcode 9?

158

Depois de atualizar para o Xcode 9, usando o Swift 3 e o simulador do iPhone X, meu console está cheio de:

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

O que é isso e como faço para corrigi-lo? A ajuda é muito apreciada.

PS: Prefiro não apenas "silenciá-lo" com um Environment Variableesquema no build.

David Seek
fonte
1
Possível duplicado de stackoverflow.com/questions/40226104/...
timgcarlson
5
bem. Eu encontrei esta discussão também. mas é OSX, velho e realmente não respondeu ...
David Procure
você já encontrou uma solução?
precisa saber é o seguinte
2
a coisa irritante é não que este efetua login de console, mas também parece travar o segmento principal
Hogdotmac
1
sim. mas apenas no modo de depuração, tanto quanto eu notei.
David Seek

Respostas:

182

A equipe da Apple deu a seguinte resposta:

TIC expande para "conexão TCP I / O", que é um subsistema da CFNetwork que executa uma conexão TCP

1e 57são o domínio e o código CFStreamError, respectivamente; um domínio 1 é kCFStreamErrorDomainPOSIX e, dentro desse domínio, 57é ENOTCONN

Em resumo, uma leitura de TCP falhou com ENOTCONN.

Como o subsistema de conexão de E / S TCP não possui API pública, você deve necessariamente usá-lo através de algum wrapper de alto nível (como NSURLSession).

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

EDIT / UPDATE:

Como todos nós ainda temos esses logs irritantes, perguntei ao mesmo especialista da Apple no link acima sobre a nossa situação , que agora é específica para o Xcode 9 e o Swift 4. Aqui está:

Muitas pessoas reclamam desses logs, que eu também tenho em todos os meus aplicativos desde que atualizei para o 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

Sua resposta:

É importante perceber que esse ENOTCONN não significa necessariamente que algo deu errado. Conexões TCP fechadas são esperadas em todas as versões do HTTP. Portanto, a menos que haja algum outro sintoma associado a esse erro, minha recomendação é que você o ignore.

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

SOLUÇÃO: Aguarde novas versões / atualizações do Xcode 9.

rgoncalv
fonte
30
Isso não é específico do Swift. Estou conseguindo com o Objectiv-C também.
Victor Engel
8
Você realmente foi acima e além para obter esta resposta #
G. LC
7
Sua solução parece não ter funcionado, pois ainda existe no XCode10.
Gennadii Tsypenko
2
nós temos que encontrar uma maneira de se livrar dessa, porque a impressão log afeta o desempenho aplicativo durante a execução, por agora podemos esperar que, para não #Depurar constrói isso não vai obter impressos
Stoyan
6
seria bom ter algumas configurações, para que pudéssemos "ignorá-lo"
Zaporozhchenko Oleksandr
40

Aqui está como se TIC Read Status [11:0x0]: 1:57decompõe:

TIC expande para "conexão TCP I / O", que é um subsistema da CFNetwork que executa uma conexão TCP

11 é um número de identificação de conexão no TIC

0x0 é um ponteiro para o próprio objeto TIC

1e 57são o domínio e o código CFStreamError, respectivamente; um domínio 1 é kCFStreamErrorDomainPOSIX e, dentro desse domínio, 57 é ENOTCONN

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

0rt
fonte
OK. Por enquanto, tudo bem. isso é algo ruim ou apenas uma informação? preciso consertar alguma coisa?
David Seek
Eu acredito que tem algo a ver com iOS11.0 e pode ser corrigido em versões futuras
0rt
8
Mas por que isso está realmente acontecendo? E por que começou de repente com o iOS 11?
Lane Rettig
Também estou recebendo alguns tons no meu log, mas todas as minhas chamadas de rede estão funcionando bem: L
O mesmo problema que devo fazer com isso?
Genevios
35

Nota: Assim como o @David mencionado no comentário, é uma maneira de ocultar os avisos; portanto, use este argumento de inicialização para evitar o recebimento de muitas mensagens repetitivas e ter um console limpo. Depois de concluir a depuração, mantenha-o desativado, pois o console não fornece informações úteis quando está ativado. Por exemplo libc++abi.dylib: terminating with uncaught exception of type NSException.

Para as pessoas que estão se perguntando como silenciar o aviso e até que uma solução melhor esteja disponível, continue seguindo as variáveis ​​à mão e alternando conforme necessário.

Use OS_ACTIVITY_MODE = disablea variável de ambiente em Argumentos nos esquemas do produto para evitar que o console seja inundado por esses avisos.

Nota B: ative para ver o efeito.

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

insira a descrição da imagem aqui

lal
fonte
13
Também eu disse literalmente, que não quero a opção dele ^^ Apenas silenciar não elimina o problema.
David Procure
23
As pessoas precisam parar de sugerir a desativação de todas as instruções de log. Respostas como essa devem ser excluídas.
Claus Jørgensen
6

A melhor maneira que encontrei, referente a esta mensagem de log e a algumas outras (como erros de NSURLSession que não são necessariamente erros), é ter minhas próprias funções de log.

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")
    }
}

Então eu simplesmente digito [MyProject] no filtro no canto inferior direito do painel do console, e é isso.

Observe que, chamando print na fila principal, permite que seu criador de logs seja usado a partir de threads sem misturar seu console.

Pronto para ser aprimorado e ajustado para suas necessidades :)

alce
fonte
verifique "os_log". Esta é a maneira de maçã recomendamos usar com o registo avançado
user1105951
0

Eu estava tendo o mesmo problema em que estava recebendo '}' em resposta a um serviço REST (GET).

Usando:

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

depois de fazer minha solicitação de URL e redefinir meu objeto URLSession após obter a resposta como:

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

Resolveu o meu problema.

Anuj Nigam
fonte
1
Não resolverá o meu problema, pois isso acontece mesmo se tudo o que meu aplicativo faz é ligar para o Firebase. E não posso manipular a estrutura. Mas vou encaminhar isso para a equipe de desenvolvimento do Firebase. Talvez eles possam fazer algo sobre isso.
David Procure
0

Conseguimos resolver esse problema de log desativando o HTTP / 2 no servidor da Web. No nosso caso, migramos do ELB clássico para o ELB do aplicativo que adicionou suporte ao HTTP / 2 na AWS e começamos a obter "TIC Read Status [11: 0x0 ]: 1:57 "no console XCode 10.1 / iOS 12. Parece uma solução temporária até que a Apple corrija o problema com o HTTP / 2, se houver. Essa solução pode não funcionar para todos, especialmente se você estiver usando APIs de terceiros, mas fornece algumas informações sobre o problema.

Starkode
fonte
4
Bem, já se passaram 1,5 anos desde que a Apple introduziu isso ... vamos chamá-lo ... recurso ... Eu não vejo isso sendo "corrigido" tão cedo.
David Seek
0

É um log indicando que uma conexão TCP está perdida / fechada / não é válida ou o que for. Isso pode acontecer se o aplicativo tiver uma conexão tcp em execução e o aplicativo ficar em segundo plano por algum tempo ou você desligar a tela do telefone. O sistema operacional decide interromper o máximo de recursos possível para reduzir o consumo de bateria. Se você colocar o aplicativo em primeiro plano, as conexões TCP que você possuía antes não funcionarão mais. Você precisa recriar uma nova conexão tcp.

Se isso não o incomoda, simplesmente ignore.

AndaluZ
fonte