【问题标题】:Error: Protocol not available, dumping backtrace [duplicate]错误:协议不可用,转储回溯 [重复]
【发布时间】:2017-01-25 12:23:03
【问题描述】:
2016-09-17 15:16:04.386085 appDemo[2371:94976] [] __nwlog_err_simulate_crash simulate crash already simulated **"nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available"**
2016-09-17 15:16:04.386676 appDemo[2371:94976] [] nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available, dumping backtrace:
        [x86_64] libnetcore-856.1.8
    0   libsystem_network.dylib             0x0000000112dc780e __nw_create_backtrace_string + 123
    1   libnetwork.dylib                    0x0000000113bfa194 nw_socket_add_input_handler + 3002
    2   libnetwork.dylib                    0x0000000113bd7db8 nw_endpoint_flow_attach_protocols + 3768
    3   libnetwork.dylib                    0x0000000113bd6dd5 nw_endpoint_flow_setup_socket + 563
    4   libnetwork.dylib                    0x0000000113bd5b34 -[NWConcrete_nw_endpoint_flow startWithHandler:] + 2612
    5   libnetwork.dylib                    0x0000000113bf0d11 nw_endpoint_handler_path_change + 1261
    6   libnetwork.dylib                    0x0000000113bf0740 nw_endpoint_handler_start + 570
    7   libdispatch.dylib                   0x0000000112b44980 _dispatch_call_block_and_release + 12
    8   libdispatch.dylib                   0x0000000112b6e
2016-09-17 15:16:04.387153 appDemo[2371:94976] [] nw_endpoint_flow_attach_protocols [2 192.168.0.100:80 in_progress socket-flow (satisfied)] Attached flow protocol
2016-09-17 15:16:04.387679 appDemo[2371:94976] [] nw_connection_endpoint_report [2 192.168.0.100:80 in_progress socket-flow (satisfied)] reported event flow:start_connect

我正在使用带有ios 10xcode 8 版本。现在,我正在使用 API。如果,我在 Xcode 7 中使用 API,它可以正常工作,但是当我在 xcode 8 中使用的相同 API 时出现无法解析的错误消息。

【问题讨论】:

  • 然后'检查版本':)
  • 我正在检查哪个版本?
  • 您的 API。请记住,您的 API 可能会错过一些重要的更新,因为 iOS 10 SDK 中有许多更改,至少是重要的委托方法,而您的 API 中的那些可能不会听。
  • 有什么更新吗?我遇到了同样的问题。
  • 如果对您有用,请接受我的回答。它对我有用:)

标签: objective-c ios10 xcode8.2


【解决方案1】:

我找到了如下解决方案:

  1. 在 XCode 菜单中,转到产品 > 方案 > 编辑方案
  2. 打开“参数”选项卡
  3. 添加环境变量:- OS_ACTIVITY_MODEdisable

【讨论】:

  • 此代码在哪里使用?我有同样的错误
  • 我已经在截图中明确提到了步骤。请按照步骤操作,如果您仍然遇到问题,请告诉我。 @比拉尔艾哈迈德。如果它对您有用,请不要忘记接受答案:)
  • 我正在使用 React Native 并得到相同的异常。试试代码是什么意思?您能否提及我想在哪里添加您提供的代码的 sn-p?
  • 没有解释 OS_ACTIVITY_MODE 是什么,以及禁用它的作用。另外,不清楚所有这些代码是怎么回事。
  • 此选项还将隐藏 NSLog 的真实设备,这通常是不受欢迎的。更好的解决方案在这里stackoverflow.com/questions/37800790/…
【解决方案2】:

ma​​n socket 中没有 SO_NOAPNFALLBK 套接字选项。我猜,这个选项是Apple添加的,并且与推送通知服务有关,在模拟器上不可用。

【讨论】:

    【解决方案3】:

    https://stackoverflow.com/a/39651073/1033581 提供了一种更简洁的解决方案(比 Ankit Goyal 提供的解决方案)可以修复模拟器日志而不影响设备日志:

    1. 在 Product > Scheme > Edit Scheme... > Run 下,将 OS_ACTIVITY_MODE 环境变量设置为 ${DEBUG_ACTIVITY_MODE},如下所示:

    1. 转到您的项目构建设置,然后单击 + 添加名为 DEBUG_ACTIVITY_MODE 的用户定义设置。展开此设置并单击“调试”旁边的 + 以添加特定于平台的值。选择下拉菜单并将其更改为“任何 iOS 模拟器 SDK”。然后将其值设置为“禁用”(Xcode 8)或“默认”(Xcode 9),如下所示:

    【讨论】:

    • 感谢您的回答。您认为禁用 OS_ACTIVITY_MODE 是一个好习惯吗?因为如果禁用它,您将不会收到有关自动布局问题、其他警告和崩溃堆栈跟踪的警告。
    • @MilanKamilya 此答案旨在在 Release 中禁用它。至于不要在Debug中禁用它,也更好,直到你得到太多不需要的日志。
    • 接受的答案对我不起作用,但这个选项可以。谢谢!!
    【解决方案4】:

    要关闭操作系统活动模式的详细信息, 您只需转到(在 Xcode 菜单栏中)

    • 产品 -> 方案 -> 编辑方案 -> 运行(左) -> 选择参数 -> 在环境变量上

    • 添加 OS_ACTIVITY_MODE 和值为 disable

    【讨论】:

    • OS_ACTIVITY_MODE disable 可以禁用所有日志功能。
    猜你喜欢
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多