【问题标题】:Crash in Reachability API可达性 API 崩溃
【发布时间】:2010-12-22 21:50:48
【问题描述】:

我正在使用 Apple 提供的 Reachability 示例代码来检查网络连接并获得更改通知 (Reachability Sample code)。

我查看了我的应用程序的一些崩溃锁。似乎有些崩溃是由于 Reachability/SystemConfiguration Reachablity API 的东西(见下文)。 SCNetworkReachabilityGetFlags 仅用于 Apple 提供的 Reachability 类。还是我误解了崩溃日志?

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Thread 0 Crashed:
0   libSystem.B.dylib              0x00000e70 mach_msg_trap + 20
1   libSystem.B.dylib              0x00003354 mach_msg + 60
2   SystemConfiguration            0x0001f480 configopen + 168
3   SystemConfiguration            0x00004d08 SCDynamicStoreCreateWithOptions + 272
4   SystemConfiguration            0x00004e54 SCDynamicStoreCreate + 24
5   SystemConfiguration            0x00015244 updateReachabilityStoreInfo + 152
6   SystemConfiguration            0x00016f04 updateCommCenterStatus + 32
7   SystemConfiguration            0x00017678 checkAddress + 1368
8   SystemConfiguration            0x0001a260 __SCNetworkReachabilityGetFlags + 1992
9   SystemConfiguration            0x0001b00c rlsPerform + 132
10  CoreFoundation                 0x00058266 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 8
11  CoreFoundation                 0x00028692 __CFRunLoopDoSources0 + 214
12  CoreFoundation                 0x00027f62 __CFRunLoopRun + 258
13  CoreFoundation                 0x00027d74 CFRunLoopRunSpecific + 220
14  CoreFoundation                 0x00027c82 CFRunLoopRunInMode + 54
15  GraphicsServices               0x00004e84 GSEventRunModal + 188
16  UIKit                          0x00004f8c -[UIApplication _run] + 564
17  UIKit                          0x000024cc UIApplicationMain + 964
18  MyApp                          0x0000f80c main (main.m:21)
19  MyApp                          0x0000f77c start + 44

【问题讨论】:

    标签: iphone objective-c crash reachability


    【解决方案1】:

    我发现尝试打开网络连接会更好。然后如果失败,设置一个标志来尝试后者并避免“可达性”。即使“可达性”在启动时通过,它也可以随时淡入淡出。

    【讨论】:

    • 我同意这一点,但您可以使用可达性来“帮助”;例如,当请求失败时,让用户知道他们可能没有连接到互联网。
    【解决方案2】:

    可达性是 Apple 示例代码示例中最差的一个。

    虽然它擅长通知网络连接,但在指示主机是否可达方面相当差[阅读:无望]。

    你也可以直接ping主机,超时捕获失败。

    【讨论】:

      【解决方案3】:

      如果存在,只需在 Reachability.m 中注释掉以下行。

       [super init];
      

      【讨论】:

        【解决方案4】:

        在第一个视图控制器中使用它。在模态视图或其他派生视图中使用时很容易遇到麻烦。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-11
          • 1970-01-01
          • 1970-01-01
          • 2013-08-16
          • 2015-08-17
          • 1970-01-01
          相关资源
          最近更新 更多