İOS11 / Xcode 9'daki TIC Okuma Durumu 1:57 nedir?


158

Swift 3 ve iPhone X simülatörünü kullanarak Xcode 9'a güncelledikten sonra konsolum aşağıdakilerle dolu:

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

Bu nedir ve nasıl düzeltebilirim? Yardım çok takdir ediliyor.

PS: Ben sadece bir Environment Variableinşa düzeni ile "susturmak" tercih ederim .



5
iyi. ben de bu konu bulduk. ama osx, eski ve gerçekten cevaplanmadı ...
David Seek

henüz bir çözüm buldunuz mu?
Khodour.F

2
can sıkıcı şey bu konsolda oturum değil, ama aynı zamanda ana iş parçacığı asmak gibi görünüyor
Hogdotmac

1
Evet öyle. ama fark ettiğim kadarıyla sadece hata ayıklama modunda.
David Seek

Yanıtlar:


182

Apple personeli şu cevabı verdi:

TIC CFNetwork içinde bir TCP bağlantısı çalıştıran bir alt sistem olan “TCP G / Ç bağlantısı” na genişler

1ve 57sırasıyla CFStreamError etki alanı ve kodudur; 1 alan adı kCFStreamErrorDomainPOSIX ve bu alan adı dahilinde 57ENOTCONN

Kısacası, bir TCP okuması ENOTCONN ile başarısız oldu.

TCP G / Ç bağlantı alt sisteminde genel API bulunmadığından, bunu bazı üst düzey sarmalayıcılarla (NSURLSession gibi) kullanmanız gerekir.

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

DÜZENLEME / GÜNCELLEME:

Hepimiz bu sinir bozucu günlüklere sahip olduğumuz için , yukarıdaki Apple kodumdan durumumuz hakkında şimdi Xcode 9 ve Swift 4 için spesifik olan aynı Apple uzmanına sordum.

Xcode 9 / iOS 11'e yükselttiğimden beri birçok uygulamada da sahip olduğum bu günlükler hakkında birçok insan şikayet ediyor.

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

Cevabı:

Bu ENOTCONN'un her şeyin yanlış gittiği anlamına gelmediğini anlamak önemlidir. HTTP'nin tüm sürümlerinde kapalı TCP bağlantıları bekleniyor. Bu nedenle, bu hatayla ilişkili başka bir belirti yoksa, önerim onu ​​görmezden gelmenizdir.

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

ÇÖZÜM: Xcode 9'un daha yeni sürümlerini / güncellemelerini bekleyin.


30
Bu Swift'e özgü değil. Objectiv-C ile de alıyorum.
Victor Engel

8
Bu yanıtı almak için gerçekten yukarıda ve öteye gittiniz
G. LC

7
Çözümünüz hala XCode10'da olduğu için işe yaramadı.
Gennadii Tsypenko

2
Bundan kurtulmanın bir yolunu bulmalıyız, çünkü günlük yazdırma çalışma zamanında uygulama performansını etkiler, şimdilik #DEBUG olmayan yapılarda bunun yazdırılmayacağını ümit edebiliriz
Stoyan

6
bazı ayarlara sahip olmak güzel olurdu, bu yüzden aslında "görmezden gelebiliriz"
Zaporozhchenko Oleksandr

40

İşte böyle TIC Read Status [11:0x0]: 1:57yıkılıyor:

TIC CFNetwork içinde bir TCP bağlantısı çalıştıran bir alt sistem olan “TCP G / Ç bağlantısı” na genişler

11 TIC içindeki bir bağlantı kimlik numarasıdır

0x0 TIC nesnesinin kendisine bir işaretçi

1ve 57sırasıyla CFStreamError etki alanı ve kodudur; 1 etki alanı kCFStreamErrorDomainPOSIX ve bu etki alanı içinde 57 ENOTCONN

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


Tamam. çok uzak çok iyi. bu kötü bir şey mi yoksa sadece bilgi mi? bir şey düzeltmem gerekiyor mu?
David Seek

Ben iOS11.0 ile ilgili bir şey olduğuna inanıyorum ve gelecekteki sürümlerde düzeltilebilir
0rt

8
Ama neden gerçek oluyor? Ve neden aniden iOS 11 ile başladı?
Lane Rettig

Ben de onları günlükte bir ton alıyorum ama tüm ağ çağrılarım iyi çalışıyor: L

Aynı sorun bununla ne yapmalıyım?
Genevios

35

Not: @David'in yorumda bahsettiği gibi, uyarıları gizlemenin bir yolu, bu nedenle tekrarlanan mesajların alınmasını ve temiz bir konsol almasını önlemek için bu başlatma bağımsız değişkenini kullanın. Hata ayıklama işlemi tamamlandıktan sonra, konsol etkinleştirildiğinde yararlı bilgiler sağlamadığından devre dışı bırakın. Örneğin libc++abi.dylib: terminating with uncaught exception of type NSException.

Uyarının nasıl susturulacağını merak eden insanlar için ve daha iyi bir düzeltme elde edilene kadar değişkeni takip etmeye devam edebilir ve gerektiğinde geçiş yapabilirsiniz.

OS_ACTIVITY_MODE = disableKonsolun bu tür uyarılarla dolmasını önlemek için ürün şemalarındaki Bağımsız Değişkenler altındaki ortam değişkenini kullanın .

Not B: Efekti görmek için etkinleştirin.

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

resim açıklamasını buraya girin


13
Ayrıca ben tam anlamıyla, ben onun seçeneği istemiyorum ^^ dedim Sadece susturmak sorundan kurtulmaz.
David Seek

23
Kişilerin tüm günlük ifadelerini devre dışı bırakmayı önermesi gerekir. Bunun gibi cevaplar silinmelidir.
Claus Jørgensen

6

Bu günlük iletisi ve diğerleriyle ilgili olarak bulduğum en iyi yol (mutlaka hata olmayan NSURLSession hataları gibi) kendi günlük işlevlerime sahip olmaktır.

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

Sonra konsol bölmesinin sağ alt filtresine [MyProject] yazıyorum ve hepsi bu.

Ana kuyruğa yazdırmayı çağırarak, kaydedicinizin konsolunuzu karıştırmadan iş parçacıklarından kullanılmasına izin verdiğini unutmayın.

İhtiyaçlarınız için geliştirilmeye ve ayarlanmaya hazır :)


"os_log" u işaretleyin. bu elma gelişmiş günlüğü ile kullanmanızı tavsiye yolu
user1105951

0

Ben de aynı sorunu bir REST (GET) hizmetine yanıt olarak '}' alıyordum.

Kullanımı:

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

URL isteğimi yaptıktan ve şu şekilde yanıt aldıktan sonra URLSession nesnesimi sıfırladıktan sonra:

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

Sorunumu çözdüm.


1
Uygulamamın yaptığı tek şey Firebase'e çağrı yapıyorsa bile bu sorunumu çözmeyeceğim. Ve çerçeveyi manipüle edemiyorum. Ama bunu Firebase dev ekibine ileteceğim. Belki bu konuda bir şeyler yapabilirler.
David Seek

0

Bu günlük kaydı sorununu web sunucusunda HTTP / 2'yi devre dışı bırakarak çözmeyi başardık, bizim durumumuzda klasik ELB'den AWS'de HTTP / 2'ye destek ekleyen ELB uygulamasına geçtik ve "TIC Okuma Durumu [11: 0x0 ]: 1:57 "XCode 10.1 / iOS 12 konsolunda. Bu, Apple sorunu varsa HTTP / 2 ile çözene kadar geçici bir çözüm gibi görünüyor. Bu çözüm, özellikle üçüncü taraf API'ları kullanıyorsanız herkes için çalışmayabilir, ancak size sorun hakkında bazı bilgiler verir.


4
Apple'ın bunu tanıtmasından bu yana 1,5 yıl geçti ... hadi diyelim ... özellik ... Yakında bunun "sabit" olduğunu görmüyorum.
David

0

TCP bağlantısının kaybolduğunu / kapandığını / geçersiz olmadığını veya başka bir şey olduğunu gösteren bir günlüktür. Bu, uygulamanızda çalışan bir tcp bağlantısı varsa ve uygulama bir süre arka planda tutulursa veya telefonunuzun ekranını kapatırsanız oluşabilir. İşletim sistemi, pil tüketimini azaltmak için mümkün olduğunca fazla kaynağı durdurmaya karar verir. Uygulamayı ön plana getirirseniz, daha önce sahip olduğunuz tcp bağlantıları artık çalışmaz. Yeni bir tcp bağlantısı oluşturmanız gerekir.

Seni rahatsız etmezse, görmezden gel.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.