Ios 如何解释从SCNetworkReachabilityCreateWithName返回的null?
我们的代码中有一个方法,它使用Ios 如何解释从SCNetworkReachabilityCreateWithName返回的null?,ios,reachability,Ios,Reachability,我们的代码中有一个方法,它使用SCNetworkReachabilityCreateWithName返回SCNetworkReachabilityRef: - (SCNetworkReachabilityRef)cCreateReachabilityRefWithCStr:(const char *)host { return SCNetworkReachabilityCreateWithName(NULL, host); } 有时,我们会为可达性引用返回NULL。空返回是什么意思 A
SCNetworkReachabilityCreateWithName
返回SCNetworkReachabilityRef
:
- (SCNetworkReachabilityRef)cCreateReachabilityRefWithCStr:(const char *)host {
return SCNetworkReachabilityCreateWithName(NULL, host);
}
有时,我们会为可达性引用返回NULL。空返回是什么意思
Apple文档没有讨论这些方法的空返回。但是,SCNetworkReachabilityCreateWithName
中的Classes/Reachability.m文件说明了一个事实,即SCNetworkReachabilityCreateWithName
可以返回NULL,但没有说明原因
那么空返回意味着什么,我该如何处理呢?在回答iOS开发者论坛上的类似查询时(链接仅限iOS开发者计划成员访问),苹果开发者支持部的一位人士指出,据他所知,
SCNetworkReachabilityCreateWithName
可能返回NULL的原因只有三个:
kSCStatusInvalidArgument
)李>
kSCStatusInvalidArgument
);或kSCStatusXxx
)SCNetworkReachabilityCreateWithName
返回NULL的唯一方式
我还了解到,包含有关检测和解释调用SCxxx
函数生成的错误的信息,特别是SCError()
和SCErrorString()
之类的内容
我通过将“”和NULL作为名称传递,故意从SCNetworkReachabilityCreateWithName
返回空值,然后尝试SCError
和SCErrorString
(从系统配置参考中引用),瞧,我做了一些有意义的额外信息:
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
这解释了从达尔文代码的三个案例中有两个返回NULL
还有一种方法可以使用SCCopyLastError()
获取CFErrorRef
,它实际上可能包含更多信息。除上述系统配置参考外,请参阅
考虑到所有这些,我想说前两种情况是无法重试的,因为传递一个空的或零长度的主机名是一个程序逻辑错误。第三个与内存相关的案例可能可以重试。针对iOS开发者论坛上的类似查询(链接仅限iOS开发者程序成员访问),苹果开发者支持部的一位人士指出,据他所知,
SCNetworkReachabilityCreateWithName
可能返回NULL的原因只有三个:
kSCStatusInvalidArgument
)李>
kSCStatusInvalidArgument
);或kSCStatusXxx
)SCNetworkReachabilityCreateWithName
返回NULL的唯一方式
我还了解到,包含有关检测和解释调用SCxxx
函数生成的错误的信息,特别是SCError()
和SCErrorString()
之类的内容
我通过将“”和NULL作为名称传递,故意从SCNetworkReachabilityCreateWithName
返回空值,然后尝试SCError
和SCErrorString
(从系统配置参考中引用),瞧,我做了一些有意义的额外信息:
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
这解释了从达尔文代码的三个案例中有两个返回NULL
还有一种方法可以使用SCCopyLastError()
获取CFErrorRef
,它实际上可能包含更多信息。除上述系统配置参考外,请参阅
考虑到所有这些,我想说前两种情况是无法重试的,因为传递一个空的或零长度的主机名是一个程序逻辑错误。第三个与内存相关的案例可能可以重试