当前位置:编程学习 > wap >>

IOS学习笔记44--ASIRequestHttp之BUG(一)

 
其实这也是无意间看到的,大家看看是不是这么回事
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个下载线程时也不会影响主线程了,是不是很神奇。
 
补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,