【问题标题】:What is TIC Read Status 1:57 in iOS11/Xcode 9?iOS11/Xcode 9 中 TIC 读取状态 1:57 是什么?
【发布时间】:2018-03-03 07:49:16
【问题描述】:

更新到 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 来“静默”它。

【问题讨论】:

  • 好吧。我也找到了这个线程。但它是 osx,旧的并且没有真正回答......
  • 你找到解决办法了吗?
  • 烦人的不是这个登陆控制台,而是好像还挂了主线程
  • 是的。但据我所知,仅在调试模式下。

标签: xcode ios-simulator ios11 xcode9


【解决方案1】:

苹果工作人员给出了如下答案:

TIC 扩展为“TCP I/O 连接”,这是 CFNetwork 中运行 TCP 连接的子系统

157 分别是 CFStreamError 域和代码; 1 的域是 kCFStreamErrorDomainPOSIX,在该域内,57 是 ENOTCONN

简而言之,TCP 读取失败并使用 ENOTCONN。

由于 TCP I/O 连接子系统没有公共 API,您必须通过一些高级包装器(如 NSURLSession)来使用它。

来源:https://forums.developer.apple.com/thread/66058

编辑/更新:

由于我们仍然有这些烦人的日志,我通过上面的链接向同一位 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 并不一定意味着出现任何问题。所有版本的 HTTP 都需要关闭的 TCP 连接。因此,除非有与此错误相关的其他症状,否则我的建议是您忽略它。

来源:https://forums.developer.apple.com/message/272678#272678

解决方案:等待 Xcode 9 的更新版本/更新。

【讨论】:

  • 这不是 Swift 特有的。我也在使用 Objectiv-C。
  • 为了得到这个答案,你真的不遗余力
  • 您的解决方案似乎没有奏效,因为它仍然存在于 XCode10 中。
  • 我们必须想办法解决这个问题,因为日志打印会在运行时影响应用程序的性能,现在我们可以希望,对于非#DEBUG 构建,这不会被打印
  • 有一些设置会很好,所以我们实际上可以“忽略它”
【解决方案2】:

TIC Read Status [11:0x0]: 1:57 的分解方式如下:

TIC 扩展为“TCP I/O 连接”,这是 CFNetwork 中运行 TCP 连接的子系统

11 是 TIC 内的连接 ID 号

0x0 是指向 TIC 对象本身的指针

157 分别是 CFStreamError 域和代码;域 1 是 kCFStreamErrorDomainPOSIX,在该域内,57 是 ENOTCONN

来源:https://forums.developer.apple.com/thread/66058

【讨论】:

  • 好的。到目前为止,一切都很好。这是坏事还是只是一个信息?我需要解决什么问题吗?
  • 我相信它与iOS11.0有关,可能会在未来的版本中修复
  • 但为什么会发生呢?为什么它突然从 iOS 11 开始?
  • 我的日志中也有一些音调,但我所有的网络调用都工作正常:L
  • 同样的问题我必须用这个做什么?
【解决方案3】:

注意:就像@David 在评论中提到的那样,这是一种隐藏警告的方法,所以使用这个启动参数来避免收到许多重复的消息并拥有一个干净的控制台。一旦完成调试,请将其禁用,因为控制台在启用时不会提供有用的信息。例如libc++abi.dylib: terminating with uncaught exception of type NSException

对于想知道如何使警告静音的人,在有更好的解决方案之前,您可以随时关注变量并根据需要进行切换。

在产品方案的 Arguments 下使用 OS_ACTIVITY_MODE = disable 环境变量,以避免控制台被此类警告淹没。

注意B:启用它可以看到效果。

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

【讨论】:

  • 我也确实说过,我不想要他的选择 ^^ 只是让它静音并不能解决问题。
  • 人们需要停止建议禁用所有日志语句。应该删除这样的答案。
【解决方案4】:

我发现,关于此日志消息和其他一些消息(例如不一定是错误的 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] 即可。

请注意,通过在主队列上调用 print,它允许从线程中使用您的记录器,而不会混淆您的控制台。

准备好根据您的需要进行改进和调整 :)

【讨论】:

  • 检查“os_log”。这是苹果推荐使用高级日志记录的方式
【解决方案5】:

在响应 REST(GET) 服务时,我遇到了同样的问题。

使用:

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

在发出我的 URL 请求后,并在收到响应后重置我的 URLSession 对象:

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

解决了我的问题。

【讨论】:

  • 不会解决我的问题,因为即使我的应用程序所做的只是调用 Firebase 也会发生这种情况。而且我无法操纵框架。但我会将其转发给 Firebase 开发团队。也许他们可以为此做点什么。
【解决方案6】:

我们设法通过在 Web 服务器上禁用 HTTP/2 来解决这个日志记录问题,在我们的例子中,我们已经从经典 ELB 迁移到应用程序 ELB,增加了对 AWS 上的 HTTP/2 的支持,我们开始获得“TIC 读取状态 [ 11:0x0]: 1:57" 在 XCode 10.1 / iOS 12 控制台上。这看起来像是一个临时解决方案,直到 Apple 解决 HTTP/2 的问题(如果有的话)。此解决方案可能不适用于所有人,尤其是在您使用第三方 API 时,但它可以让您对问题有所了解。

【讨论】:

  • 好吧,距 Apple 推出此功能已有 1.5 年了……我们称之为……功能……我认为这不会很快被“修复”。
【解决方案7】:

这是一个记录,表明 TCP 连接丢失/关闭/not_valid 或其他。如果您的应用程序正在运行 tcp-connection 并且应用程序在后台运行了一段时间,或者您关闭了手机屏幕,则可能会发生这种情况。操作系统决定停止尽可能多的资源以减少电池消耗。如果您将应用程序带到前台,您之前拥有的 tcp 连接将不再起作用。您需要重新创建一个新的 tcp 连接。

如果它不打扰你,请忽略它。

【讨论】:

    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 2018-03-02
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多