博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS学习笔记44--ASIRequestHttp之BUG(一)
阅读量:4609 次
发布时间:2019-06-09

本文共 973 字,大约阅读时间需要 3 分钟。

其实这也是无意间看到的,大家看看是不是这么回事

BUG:当下载线程数超过2时,就会影响到主线程响应用户请求的速度了

 

看ASIRequestHttp.m--requestFinished代码

- (void)requestFinished

{

#if DEBUG_REQUEST_STATUS || DEBUG_THROTTLING

ASI_DEBUG_LOG(@"[STATUS] Request finished: %@",self);

#endif

if ([selferror] || [selfmainRequest]) {

return;

}

if ([selfisPACFileRequest]) {

[selfreportFinished];

}else {

[selfperformSelectorOnMainThread:@selector(reportFinished)withObject:nilwaitUntilDone:[NSThreadisMainThread]];

}

}

你会发现在不使用自动代理脚本时,就会在主线程执行reportFinished。

解决办法:

一:继承ASIRequestHttp重写requestFinished方法;

二:懒人办法,直接修改原来ASIRequestHttp方法;看如下代码

 

- (void)requestFinished

{

#if DEBUG_REQUEST_STATUS || DEBUG_THROTTLING

    NSLog(@"[STATUS] Request finished: %@",self);

#endif

   if ([selferror] || [selfmainRequest]) {

       return;

    }

    [selfreportFinished];

}

修改完发现至少5个下载线程时也不会影响主线程了,是不是很神奇。

上个原帖地址:http://www.keakon.net/2011/08/05/%E8%AE%A9ASIHTTPRequest%E4%B8%8D%E5%8D%A0%E7%94%A8%E4%B8%BB%E7%BA%BF%E7%A8%8B

转载于:https://www.cnblogs.com/james1207/p/3253728.html

你可能感兴趣的文章
MySQL数据库免安装版配置
查看>>
你必知必会的SQL面试题
查看>>
html5 Canvas绘制时钟以及绘制运动的圆
查看>>
Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween
查看>>
JavaScript空判断
查看>>
洛谷 P1439 【模板】最长公共子序列(DP,LIS?)
查看>>
python timeit
查看>>
Wireless Network 并查集
查看>>
51nod 1019 逆序数
查看>>
20145202马超《JAVA》预备作业1
查看>>
云推送注意(MSDN链接)
查看>>
OpenMobile's Application Compatibility Layer (ACL)
查看>>
竞价广告系统-广告检索
查看>>
[转]基于.NET平台常用的框架整理
查看>>
Symbian (Read Inbox)读取收件箱的内容
查看>>
良好的编程规范
查看>>
struts2 入门
查看>>
.net 编译原理
查看>>
mean 快速开发和现有技术的对比分析
查看>>
Metro Style app :浏览器扩展
查看>>