4

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

我查看了我的应用程序的一些崩溃锁。似乎有些崩溃是由于 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
4

4 回答 4

3

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

于 2010-12-22T22:04:31.467 回答
0

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

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

您也可以直接 ping 主机,并在超时时捕获故障。

于 2010-12-23T00:37:49.233 回答
0

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

 [super init];
于 2010-12-23T06:45:37.813 回答
0

在第一个视图控制器中使用它。在模态视图或其他派生视图中使用它很容易陷入困境。

于 2012-12-10T02:09:59.187 回答