IOS 网络请求优化问题

现在做一个社交的APP。用的AFNetworking来做的网络。

我是通过AFHTTPRequestOperation,然后将operation添加到AFHTTPRequestOperationManager的operationQueue里面通过队列的方式进行网络请求的调度的。

我现在比较担心就是在网络比较慢的情况下,用户在ViewController1当中进行了读取数据操作,然后等了一段时间后没有读到数据,希望直接退出ViewController1。当退出后,之前读取数据的操作仍然在operationQueue里面进行网络访问。

有没有比较好的设计方式能够避免这种界面已经被Pop或dismiss掉之后,其网络请求仍然占据网络资源的问题

阅读 9.4k
3 个回答

AFHTTPRequestOperationManager 有个 operationQueue 属性,它是 NSOperationQueue 类的实例,它有一个方法 cancelAllOperations

文档:This method calls the cancel method on all operations currently in the queue.

viewWillDisappear 方法中调用就行。

新手上路,请多包涵

重写viewdiddisappear方法

“仍然占据网络资源”这个描述就不太准确。。。
这么说吧,一个网络请求发出去了,比如数据经过TCP、IP层发到路由器等网路上了你是取消不了的,之后服务器的数据返回路径你也是控制不了的,楼上说cancel掉,NSOperation的cancel只是把isCanceled标志位置位而已,做不了其他的呀,所以你看SDWebImage里的网络回调的block都有判断当前operation的isCanceled是否为YES了,为NO才回调呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题