美文网首页iOS 深度好文
AFNetworking启动时isReachable返回fals

AFNetworking启动时isReachable返回fals

作者: Bean_Do | 来源:发表于2017-09-22 13:42 被阅读136次

    当我们在appDelegate's didFinishLaunching使用AFNetworkReachabilityManager的startMonitoring后,然后立即使用isReachable会发现总会得到false值。有时候我们会在网络请求的封装中加入isReachable状态来判断是否可以进行网络请求,这就导致了在didFinishLaunching中初始化的类进行的网络请求总是失败。

    造成这种情况的原因是:

    在startMonitoring 后调用isReachable并不能立刻获得正确的结果,需要一点时间才能得到正确的结果,因为isReachable依赖于Apple API SCNetworkReachabilityGetFlags,而这是一个同步任务(猜测在执行ping操作),所以AFN在后台异步队列中回调了它,从而导致不能立刻获得结果。

    解决上述问题方式有两种:

    第一个是忽略isReachable的判断,直接去进行网络请求。据说苹果推荐的就是首先去尝试网络请求,当网络请求失败的时候再去检查isReachable

    第二个是设置网络连接状态改变的回调setReachabilityStatusChangeBlock,在该回调里判断isReachable或进行其他操作。

    相关文章

      网友评论

        本文标题:AFNetworking启动时isReachable返回fals

        本文链接:https://www.haomeiwen.com/subject/hphfextx.html