gpt4 book ai didi

ios - 如何解释从 SCNetworkReachabilityCreateWithName 返回的空值?

转载 作者:行者123 更新时间:2023-11-29 13:14:21 33 4
gpt4 key购买 nike

我们的代码中有这个方法,它使用 SCNetworkReachabilityCreateWithName 返回一个 SCNetworkReachabilityRef:

- (SCNetworkReachabilityRef)cCreateReachabilityRefWithCStr:(const char *)host {
return SCNetworkReachabilityCreateWithName(NULL, host);
}

有时我们返回 NULL 作为可达性引用。返回 NULL 是什么意思?

Apple 文档 SCNetworkReachability Reference不讨论这些方法的 NULL 返回。但是 Reachability sample code 中的 Classes/Reachability.m 文件解释了 SCNetworkReachabilityCreateWithName 可以返回 NULL 的事实,但没有说明原因。

那么返回 NULL 是什么意思,我该如何处理呢?

最佳答案

响应 iOS 开发者论坛上的类似查询 What does a NULL return from SCNetworkReachabilityCreateWithName mean? (链接仅供 iOS Developer Program 成员访问),Apple Developer Support 的一位人士指出,据他所知,SCNetworkReachabilityCreateWithName 可能返回 NULL 的原因只有三个:

  1. 节点名称为 NULL (kSCStatusInvalidArgument);
  2. 节点名称为空(kSCStatusInvalidArgument);或
  3. 内存分配问题(未设置 kSCStatusXxx)。

他还指出,可达性 API 在 Darwin 中,并且 Darwin 实现与 OS X 和 iOS 上的实现接近。代码SCNetworkReachability.c from Darwin似乎证实了他的观点,即上述三个原因是 SCNetworkReachabilityCreateWithName 返回 NULL 的唯一方式。

我还了解到 System Configuration Reference包含有关检测和解释通过调用 SCxxx 函数生成的错误的信息,特别是 SCError()SCErrorString()

我故意通过将“”和 NULL 作为名称从 SCNetworkReachabilityCreateWithName 返回 NULL,然后尝试了 SCErrorSCErrorString(引用自系统配置引用),你瞧,我做了一些有意义的额外信息:

reachtest1[9274:11303] isReachableWithName: entry: name: ""
reachtest1[9274:11303] SCNetworkReachabilityCreateWithName returned NULL!
reachtest1[9274:11303] SCError: 1002 SCErrorString: Invalid argument

reachtest1[9274:11303] isReachableWithName: entry: name: (null)
reachtest1[9274:11303] SCNetworkReachabilityCreateWithName returned NULL!
reachtest1[9274:11303] SCError: 1002 SCErrorString: Invalid argument

这解释了从 Darwin 代码的三种情况中的两种情况中返回 NULL 的原因。

还有一种使用 SCCopyLastError() 获取 CFErrorRef 的方法,其中实际上可能包含更多信息。除了上述系统配置引用,请参阅 CFError Reference .

考虑到所有这些,我会说前两种情况不会重试,因为传递 NULL 或零长度主机名是程序逻辑错误。第三个与内存相关的案例可能是可重试的。

关于ios - 如何解释从 SCNetworkReachabilityCreateWithName 返回的空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200757/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com