请选择 进入手机版 | 继续访问电脑版
查看: 1499|回复: 13

[教程] 下载管理模块内存溢出CADownloadResponse::setSearchPath()里面

[复制链接]
最佳答案
0 
andy_yu 发表于 2014-12-24 10:29:09 | 显示全部楼层 |阅读模式
<p>我用m_LogoDownloadManager-&gt;enqueueDownload</p><p>下载了80张图片,下载没有问题,下载完程序奔溃,调试发现</p><p>程序跑到</p><p>void CADownloadResponse::setSearchPath()</p><p>{</p><p>&nbsp; &nbsp; vector&lt;string&gt; searchPaths = CCFileUtils::sharedFileUtils()-&gt;getSearchPaths();</p><p>&nbsp; &nbsp; vector&lt;string&gt;::iterator iter = searchPaths.begin();</p><p>&nbsp; &nbsp; searchPaths.insert(iter, _fileName);</p><p>&nbsp; &nbsp; CCFileUtils::sharedFileUtils()-&gt;setSearchPaths(searchPaths);</p><p>}</p><p>奔溃的,提示内存溢出,第三句有问题;</p><p>。。</p><p>还有个问题是下载80张图片,下载成功</p><p>CADownloadManagerDelegate接口</p><p>virtual void onSuccess(unsigned long download_id){};</p><p>这个函数不是下载完一张提示一张</p><p>而且等80张都下载完了在提示,</p><p>是我哪里设置不对吗?在线等待!</p>
最佳答案
0 
Slim 发表于 2014-12-25 15:54:50 | 显示全部楼层
你是用了80个url么
最佳答案
0 
 楼主| andy_yu 发表于 2014-12-24 10:44:29 | 显示全部楼层
是呀,80张图片下载是正常的,去掉CADownloadResponse::setSearchPath()函数,也能正常运行, 但是第二个问题怎么是80张都下载完了在提示呢,而不是下完一张提示一张
最佳答案
0 
Slim 发表于 2014-12-24 10:52:03 | 显示全部楼层
应该是提示80次的,你贴下你的下载代码
最佳答案
0 
 楼主| andy_yu 发表于 2014-12-24 10:54:56 | 显示全部楼层
回复 @Slim : if (reader.parse(responseRes,value)) { int length = value[\"data\"][\"results\"].size(); for (int index = 0; index < length; index++) { MMGameInfo* gInfo = new MMGameInfo(); gInfo->app_name = value[\"data\"][\"results\"][index][\"app_name\"].asString(); gInfo->app_id = value[\"data\"][\"results\"][index][\"app_id\"].asInt(); gInfo->app_logo = value[\"data\"][\"results\"][index][\"app_logo\"].asString(); int pos = gInfo->app_logo.find_last_of(\'.\'); sprintf_s(filename,\"itemlogo/logo_%d.%s\",/*gInfo->app_id*/index,gInfo->app_logo.substr(pos+1,gInfo->app_logo.length()-1).c_str()); gInfo->app_logofilename = filename; gInfo->download_id = m_LogoDownloadManager->enqueueDownload(gInfo->app_logo,gInfo->app_logofilename,\"\",filename); gInfo->autorelease(); GameList.insert(index,gInfo); } }
最佳答案
0 
 楼主| andy_yu 发表于 2014-12-24 10:56:45 | 显示全部楼层
回复 @Slim : 是提示80次没错,但是是都下载完了在提示80次,还有第一个问题,我把那个函数注释掉可以吗??因为注释掉是没有问题的
最佳答案
0 
 楼主| andy_yu 发表于 2014-12-24 11:09:22 | 显示全部楼层
回复 @Slim : 调用的流程有没有错, m_LogoDownloadManager = CADownloadManager::getInstance(); m_LogoDownloadManager->setDownloadManagerDelegate(this); m_LogoDownloadManager->setDownloadMaxCount(100); 然后在调用m_LogoDownloadManager->enqueueDownload 是这样吗
最佳答案
0 
 楼主| andy_yu 发表于 2014-12-24 11:09:28 | 显示全部楼层
回复 @Slim : 调用的流程有没有错, m_LogoDownloadManager = CADownloadManager::getInstance(); m_LogoDownloadManager->setDownloadManagerDelegate(this); m_LogoDownloadManager->setDownloadMaxCount(100); 然后在调用m_LogoDownloadManager->enqueueDownload 是这样吗
最佳答案
0 
Slim 发表于 2014-12-24 11:27:12 | 显示全部楼层
MaxCount最好不要超过5
最佳答案
0 
 楼主| andy_yu 发表于 2014-12-24 11:35:01 | 显示全部楼层
回复 @Slim : 好的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

推荐阅读 More>

© 2001-2015 9秒社团

合作伙伴

公司简介 | 联系方式
COPYRIGHT©2015 ZHONGQINGLONGTU NETWORK CO.LTD ALL RIGHTS RESERVED.ICP备11023195号-4
北京中清龙图网络技术有限公司
返回顶部 返回列表