没有合适的资源?快使用搜索试试~ 我知道了~
详解iOS AFNetworking取消正在进行的网络请求
0 下载量 117 浏览量
2021-01-20
10:45:34
上传
评论
收藏 105KB PDF 举报
温馨提示
试读
2页
简介 项目开发时,开发人员经常会遇到一种情况,A控制器push进入B控制器,B控制器正在进行网络请求,请求未结束时,点击返回回到A控制器,现在问题出现了,B中网络请求还在执行,dealloc并未立即调用,为什么会发生这种情况?想在退出当前控制器时取消掉正在进行的请求,怎么做? 网络请求的封装 以AFNetworking为例,上我自己的网络请求封装主要代码: //单例模式 + (HttpManager *)sharedManager { static dispatch_once_t once; dispatch_once(&once, ^{ httpManager = [[
资源详情
资源评论
资源推荐
详解详解iOS AFNetworking取消正在进行的网络请求取消正在进行的网络请求
简介简介
项目开发时,开发人员经常会遇到一种情况,A控制器push进入B控制器,B控制器正在进行网络请求,请求未结束时,点击
返回回到A控制器,现在问题出现了,B中网络请求还在执行,dealloc并未立即调用,为什么会发生这种情况?想在退出当前
控制器时取消掉正在进行的请求,怎么做?
网络请求的封装网络请求的封装
以AFNetworking为例,上我自己的网络请求封装主要代码:
//单例模式
+ (HttpManager *)sharedManager
{
static dispatch_once_t once;
dispatch_once(&once, ^{
httpManager = [[HttpManager alloc] init];
});
return httpManager;
}
//网络类初始化
- (id)init{
self = [super init];
if(self)
{
manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
}
return self;
}
注意既然封装为单例,manager在项目运行期间就只用初始化一次,所以我把它声明为了一个成员变量。现在来看看我的网络
请求调用形式:
[[HttpManager sharedManager] dataFromWithBaseURL:BaseURL path:url method:@"POST" timeInterval:10 params:parmas success:^(NSURLRequest
*request, NSURLResponse *response, id JSON) {
} failure:^(NSURLRequest *request, NSURLResponse *response, NSError *error, id JSON) {
} error:^(id JSON) {
} finish:^(id JSON) {
}];
相信大部分开发者的封装格式都是类似的,个别反人类的封装格式我也没遇到过。当我在B调用网络请求时,突然返回到
A(此时B中请求还在执行),但是B中dealloc方法并未立即调用,等过几秒种后,B中请求的数据返回了,然后dealloc才调
用。相信很多同学都遇到过这种情况,有人会想是否是block里面有对象产生了循环引用,才发生这种情况。我想说的是,如
果真是循环引用,那就会导致控制器的dealloc方法一直不调用,而不是上述情况。
在我看来,应该是使用了这种Block格式发起的网络请求后,由于还在执行,block里面并未得到响应,所以该block对当前的
控制器,有一种强引用的效果,导致控制器退出后,并未释放掉,直到请求数据返回,block里面得到响应,才算完成,最终
调用dealloc方法。
当然,这只是我的见解,有不对的地方请指出来。
取消正在进行的网络请求取消正在进行的网络请求
上面讲了一大堆废话,现在来讲正题了。由于上述情况的原因,导致我们开发的app在一些非常规操作上,会产生一些不友好
的效果。现在要求就是在退出控制器B后,取消还在B中进行的网络请求。
要求清晰了,那么要怎么实现,其实很简单,贴上我的代码:
- (void)cancelRequest
{
if ([manager.tasks count] > 0) {
NSLog(@"返回时取消网络请求");
weixin_38612527
- 粉丝: 5
- 资源: 954
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 20240420-扬州高中小学部风雨操场转换层条件图r.dwg
- 小猫咪邮件在线发送系统源码v1.1,支持添加附件
- 永磁电机铜耗估算表-Excel-v1.0
- 参考资料-人工智能对劳动力市场的影响机制研究.pdf
- 协同供应链集成产品介绍V71sp1.rar
- 上市公司-人工智能的采纳程度面板数据(2003-2021年).xlsx
- 参考资料-人工智能技术应用对就业的影响及作用机制研究-来自制造业企业的微观证据.pdf
- 第5章spring-mvc请求映射处理
- 2023-04-06-项目笔记 - 第一百十六阶段 - 4.4.2.114全局变量的作用域-114 -2024.04.27
- 协同供应链集成产品介绍V70.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0