สถานะการอ่าน TIC 1:57 ใน iOS11 / Xcode 9 คืออะไร


158

หลังจากอัปเดตเป็น Xcode 9 โดยใช้ Swift 3 และตัวจำลอง iPhone X คอนโซลของฉันเต็มไปด้วย:

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

นี่คืออะไรและฉันจะแก้ไขได้อย่างไร ช่วยเหลือเป็นที่นิยมมาก

PS: ฉันไม่ต้องการเพียงแค่ "เงียบ" ด้วยEnvironment Variableในโครงการสร้าง


1
สำเนาซ้ำที่เป็นไปได้ของstackoverflow.com/questions/40226104/…
timgcarlson

5
ดี. ฉันได้พบกระทู้นี้ด้วย แต่ก็ OSX เก่าและไม่ได้รับคำตอบจริงๆ ...
เดวิด Seek

คุณหาวิธีแก้ปัญหาหรือยัง
Khodour.F

2
สิ่งที่น่ารำคาญไม่ใช่ว่าสิ่งนี้เข้าสู่คอนโซล แต่มันก็ดูเหมือนว่าจะแขวนเธรดหลัก
Hogdotmac

1
ใช่แล้ว. แต่เฉพาะในโหมดแก้ไขจุดบกพร่องเท่าที่ฉันสังเกตเห็น
David Seek

คำตอบ:


182

เจ้าหน้าที่ Apple ให้คำตอบต่อไปนี้:

TIC ขยายเป็น“ การเชื่อมต่อ TCP I / O” ซึ่งเป็นระบบย่อยภายใน CFNetwork ที่รันการเชื่อมต่อ TCP

1และ57เป็นโดเมนและรหัส CFStreamError ตามลำดับ; โดเมน 1 คือ kCFStreamErrorDomainPOSIX และภายในโดเมนนั้น57คือ ENOTCONN

กล่าวโดยสรุปการอ่าน TCP ล้มเหลวด้วย ENOTCONN

เนื่องจากระบบย่อยการเชื่อมต่อ TCP I / O ไม่มี API สาธารณะคุณต้องใช้ผ่านทาง wrapper ระดับสูง (เช่น NSURLSession)

แหล่งที่มา: https://forums.developer.apple.com/thread/66058

แก้ไข / UPDATE:

เนื่องจากเรายังคงมีบันทึกที่น่ารำคาญเหล่านี้อยู่ฉันจึงขอผู้เชี่ยวชาญจาก Apple จากลิงก์ด้านบนเกี่ยวกับสถานการณ์ของเราซึ่งตอนนี้เฉพาะสำหรับ Xcode 9 และ Swift 4 ที่นี่คือ:

ผู้คนจำนวนมากกำลังบ่นเกี่ยวกับบันทึกเหล่านี้ซึ่งฉันมีอยู่ในแอพทั้งหมดของฉันตั้งแต่ฉันอัปเกรดเป็น 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

คำตอบของเขา:

สิ่งสำคัญคือต้องตระหนักว่า ENOTCONN นี้ไม่ได้แปลว่ามีอะไรผิดปกติ การเชื่อมต่อ TCP แบบปิดต้องใช้กับ HTTP ทุกเวอร์ชัน ดังนั้นหากไม่มีอาการอื่น ๆ ที่เกี่ยวข้องกับข้อผิดพลาดนี้คำแนะนำของฉันคือคุณไม่ต้องสนใจมัน

แหล่งที่มา: https://forums.developer.apple.com/message/272678#272678

การแก้ไข: รอรุ่น / อัปเดตใหม่ของ Xcode 9


30
นี่ไม่ใช่เฉพาะของ Swift ฉันเข้าใจด้วย Objectiv-C เช่นกัน
Victor Engel

8
คุณได้มากกว่านี้เพื่อรับคำตอบนี้
G. LC

7
ดูเหมือนว่าโซลูชันของคุณจะไม่ทำงานเนื่องจากยังอยู่ใน XCode10
Gennadii Tsypenko

2
เราต้องหาวิธีที่จะกำจัดสิ่งนี้เพราะการพิมพ์บันทึกจะมีผลต่อประสิทธิภาพของแอพในระหว่างรันไทม์สำหรับตอนนี้เราสามารถหวังได้ว่าสำหรับ #DEBUG ที่ไม่ใช่รุ่นนี้จะไม่ได้รับการพิมพ์
Stoyan

6
จะดีมีการตั้งค่าบางอย่างดังนั้นเราสามารถจริง "ละเว้น"
Zaporozhchenko Oleksandr

40

นี่คือวิธีการTIC Read Status [11:0x0]: 1:57แบ่ง:

TIC ขยายเป็น“ การเชื่อมต่อ TCP I / O” ซึ่งเป็นระบบย่อยภายใน CFNetwork ที่รันการเชื่อมต่อ TCP

11 คือหมายเลข ID การเชื่อมต่อภายใน TIC

0x0 เป็นตัวชี้ไปยังวัตถุ TIC เอง

1และ57เป็นโดเมนและรหัส CFStreamError ตามลำดับ; โดเมน 1 คือ kCFStreamErrorDomainPOSIX และภายในโดเมนนั้น 57 คือ ENOTCONN

ที่มา: https://forums.developer.apple.com/thread/66058


ตกลง. ดีมาก เป็นสิ่งที่ไม่ดีหรือเป็นเพียงข้อมูล? ฉันต้องแก้ไขอะไรเหรอ?
David Seek

ฉันเชื่อว่ามีบางอย่างเกี่ยวกับ iOS11.0 และอาจได้รับการแก้ไขในรุ่นอนาคต
0rt

8
แต่ทำไมมันเกิดขึ้นจริง แล้วทำไมมันเริ่มต้นด้วย iOS 11
Lane Rettig

ฉันได้รับเสียงของพวกเขาเช่นกันในบันทึกของฉัน แต่ทุกการโทรเครือข่ายของฉันทำงานได้ดี: L

ปัญหาเดียวกันที่ฉันต้องทำกับสิ่งนี้คืออะไร?
Genevios

35

หมายเหตุ: เช่นเดียวกับสิ่งที่ @David พูดถึงในความคิดเห็นเป็นวิธีซ่อนคำเตือนดังนั้นให้ใช้อาร์กิวเมนต์การเปิดตัวนี้เพื่อหลีกเลี่ยงการรับข้อความซ้ำ ๆ มากมายและมีคอนโซลที่สะอาด เมื่อทำการดีบักเสร็จแล้วให้ปิดการใช้งานเนื่องจากคอนโซลไม่ได้ให้ข้อมูลที่เป็นประโยชน์เมื่อเปิดใช้งาน libc++abi.dylib: terminating with uncaught exception of type NSExceptionเช่น

สำหรับคนที่สงสัยว่าจะปิดเสียงเตือนอย่างไรและจนกว่าจะมีการแก้ไขที่ดีกว่าคุณสามารถใช้ตัวแปรต่อไปนี้เพื่อสลับและใช้งานได้ตามต้องการ

ใช้OS_ACTIVITY_MODE = disableตัวแปรสภาพแวดล้อมภายใต้ข้อโต้แย้งในโครงร่างผลิตภัณฑ์เพื่อหลีกเลี่ยงการทำให้คอนโซลถูกน้ำท่วมด้วยคำเตือนดังกล่าว

หมายเหตุ B: เปิดใช้งานเพื่อดูผลกระทบ

ที่มา: https://medium.com/@adinugroho/disable-os-logging-in-xcode-8-ec6d38502532

ป้อนคำอธิบายรูปภาพที่นี่


13
นอกจากนี้ฉันยังได้พูดอย่างแท้จริงว่าฉันไม่ต้องการทางเลือกของเขา ^^ เพียงแค่ปิดปากมันไม่ได้กำจัดปัญหา
David Seek

23
ผู้คนจำเป็นต้องหยุดแนะนำการปิดใช้งานคำสั่งบันทึกทั้งหมด คำตอบเช่นนี้ควรถูกลบ
Claus Jørgensen

6

วิธีที่ดีที่สุดที่ฉันพบเกี่ยวกับข้อความบันทึกนี้และอื่น ๆ (เช่นข้อผิดพลาด NSURLSession ที่ไม่จำเป็นต้องมีข้อผิดพลาด) คือการมีฟังก์ชั่นบันทึกของตัวเอง

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

จากนั้นฉันก็พิมพ์[MyProject]ในตัวกรองที่ด้านล่างขวาของบานหน้าต่างคอนโซลและนั่นก็คือ

โปรดทราบว่าด้วยการโทรพิมพ์ในคิวหลักจะช่วยให้คนตัดไม้ของคุณจะใช้จากกระทู้โดยไม่รวมคอนโซลของคุณ

พร้อมที่จะได้รับการปรับปรุงและปรับแต่งตามความต้องการของคุณ :)


ตรวจสอบ "os_log" นี่คือวิธีที่ Apple แนะนำให้ใช้กับการบันทึกขั้นสูง
user1105951

0

ฉันมีปัญหาเดียวกันนี้เมื่อฉันได้รับ '}' เพื่อตอบสนองต่อบริการ REST (GET)

โดยใช้:

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

หลังจากที่ทำคำขอ URL ของฉันและรีเซ็ตวัตถุ URLSession ของฉันหลังจากได้รับการตอบสนองเป็น:

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

แก้ไขปัญหาของฉัน


1
จะไม่แก้ปัญหาของฉันเช่นนี้แม้จะเกิดขึ้นหากแอพทั้งหมดของฉันคือโทรไปยัง Firebase และฉันไม่สามารถจัดการกับกรอบงานได้ แต่ฉันจะส่งต่อไปยังทีมงาน dev ของ Firebase บางทีพวกเขาสามารถทำอะไรกับมันได้
David Seek

0

เราจัดการเพื่อแก้ไขปัญหาการบันทึกนี้โดยการปิดการใช้งาน HTTP / 2 บนเว็บเซิร์ฟเวอร์ในกรณีของเราเราย้ายจาก ELB แบบคลาสสิคไปเป็นแอปพลิเคชัน ELB ที่เพิ่มการสนับสนุน HTTP / 2 บน AWS และเราเริ่มได้รับ "TIC อ่านสถานะ [11: 0x0 ]: 1:57 "บนคอนโซล XCode 10.1 / iOS 12 ดูเหมือนว่าจะเป็นวิธีแก้ปัญหาชั่วคราวจนกว่า Apple จะแก้ไขปัญหาด้วย HTTP / 2 ถ้ามี โซลูชันนี้อาจไม่ทำงานสำหรับทุกคนโดยเฉพาะอย่างยิ่งถ้าคุณใช้ API ของบุคคลที่สาม แต่จะให้ข้อมูลเชิงลึกเกี่ยวกับปัญหา


4
มันเป็นเวลา 1.5 ปีแล้วตั้งแต่ที่ Apple แนะนำสิ่งนี้ ... เรียกมันว่า ... ฟีเจอร์ ... ฉันไม่เห็นว่า "คงที่" เร็ว ๆ นี้
David Seek

0

มันเป็นการบันทึกที่บ่งบอกว่าการเชื่อมต่อ TCP นั้นสูญหาย / ปิด / not_valid หรืออะไรก็ตาม สิ่งนี้อาจเกิดขึ้นได้หากแอปของคุณมีการเชื่อมต่อ tcp-based และแอพอยู่ในพื้นหลังเป็นระยะเวลาหนึ่งหรือคุณปิดหน้าจอโทรศัพท์ของคุณ ระบบปฏิบัติการตัดสินใจที่จะหยุดทรัพยากรให้ได้มากที่สุดเพื่อลดการระบายน้ำแบตเตอรี่ หากคุณนำแอปไปยังเบื้องหน้าการเชื่อมต่อ tcp ที่คุณมีมาก่อนจะไม่ทำงานอีกต่อไป คุณต้องสร้างการเชื่อมต่อ tcp ใหม่

ถ้ามันไม่รบกวนคุณแค่เพิกเฉย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.