AssetsManager在安卓平台使用正常,但是到ios就不行了,最后发现是 cocos2d\cocos\network\CCDownloader-apple.mm中的

- (void)URLSession:(NSURLSession *)session task :(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error 函数有问题,代码如下:

- (void)URLSession:(NSURLSession *)session task :(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error
{
DLLOG("DownloaderAppleImpl task: \"%s\" didCompleteWithError: %d errDesc: %s"
, [task.originalRequest.URL.absoluteString cStringUsingEncoding:NSUTF8StringEncoding]
, (error ? (int)error.code: 0)
, [error.localizedDescription cStringUsingEncoding:NSUTF8StringEncoding]); // clean wrapper C++ object
DownloadTaskWrapper *wrapper = [self.taskDict objectForKey:task]; // if no error, callback has been called in finish task
if (_outer && error)
{
std::vector<unsigned char> buf; // just a placeholder
_outer->onTaskFinish(*[wrapper get],
cocos2d::network::DownloadTask::ERROR_IMPL_INTERNAL,
(int)error.code,
[error.localizedDescription cStringUsingEncoding:NSUTF8StringEncoding],
buf);
}
[self.taskDict removeObjectForKey:task];
[wrapper release];
}

 如果error为空的话就不会调用_outer->onTaskFinish,好坑爹啊,最后参考新版代码修改如下:

- (void)URLSession:(NSURLSession *)session task :(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error
{
DLLOG("DownloaderAppleImpl task: \"%s\" didCompleteWithError: %d errDesc: %s"
, [task.originalRequest.URL.absoluteString cStringUsingEncoding:NSUTF8StringEncoding]
, (error ? (int)error.code: )
, [error.localizedDescription cStringUsingEncoding:NSUTF8StringEncoding]); // clean wrapper C++ object
DownloadTaskWrapper *wrapper = [self.taskDict objectForKey:task]; // if no error, callback has been called in finish task
if (_outer)
{
if(error)
{
std::vector<unsigned char> buf; // just a placeholder
_outer->onTaskFinish(*[wrapper get],
cocos2d::network::DownloadTask::ERROR_IMPL_INTERNAL,
(int)error.code,
[error.localizedDescription cStringUsingEncoding:NSUTF8StringEncoding],
buf);
}
else if (![wrapper get]->storagePath.length())
{
// call onTaskFinish for a data task
// (for a file download task, callback is called in didFinishDownloadingToURL)
std::string errorString; const int64_t buflen = [wrapper totalBytesReceived];
char buf[buflen];
[wrapper transferDataToBuffer:buf lengthOfBuffer:buflen];
std::vector<unsigned char> data(buf, buf + buflen); _outer->onTaskFinish(*[wrapper get],
cocos2d::network::DownloadTask::ERROR_NO_ERROR,
,
errorString,
data);
}
else
{
NSInteger statusCode = ((NSHTTPURLResponse*)task.response).statusCode; // Check for error status code
if (statusCode >= )
{
std::vector<unsigned char> buf; // just a placeholder
const char *originalURL = [task.originalRequest.URL.absoluteString cStringUsingEncoding:NSUTF8StringEncoding];
char cmsg[];
sprintf(cmsg,"Downloader: Failed to download %s with status code (%d)", originalURL, (int)statusCode);
std::string errorMessage = cmsg; _outer->onTaskFinish(*[wrapper get],
cocos2d::network::DownloadTask::ERROR_IMPL_INTERNAL,
,
errorMessage,
buf);
}
}
}
[self.taskDict removeObjectForKey:task];
[wrapper release];
}

AssetsManager 在ios更新失败解决方案的更多相关文章

  1. SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败解决方案

    SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败的问题,可作如下尝试: 更新失败后,在windows的[事件查看器→应用程序]中找到来源为MsiInstaller,事件ID为1 ...

  2. Eclipse集成环境中Android SDK下载及更新失败解决方案

    由于公司新项目比较忙,有好长一段时间没碰Android开发咯! 近期闲来在网上下了个开源的应用想拿来自己学习下其中的源码及整体设计,当我把下下来的项目导入Eclipse中时,报如下警告: 原因是我本地 ...

  3. 现有新的iOS更新可用,请从iOS12 beta版进行更新.解决方案

    问题描述: ios系统一直弹出“现有新的iOS更新可用,请从iOS12 beta版进行更新”的提示,很烦的. 应该只出现在安装测试版ios12的手机上. 解决方案: 删除描述文件无法解决. 有网友机制 ...

  4. Dell R410 broadcom网卡驱动更新失败

    问题描述: 最近遇到一个Dell R410 broadcom网卡驱动更新失败的问题.从官网上下载的驱动在安装的过程中都会自己回滚回来,很是困惑. 尝试解决: Dell官网现在提供的驱动一般最少有两种格 ...

  5. [置顶] ubuntu版本很老,apt-get update更新失败时(W: Failed to fetch ...)------如何创建新的sources.list

    在说这个解决方案之前,我先说下,目前遇到的问题: 我使用 sudo apt-get update 之后,更新失败.具体原因如下: W: Failed to fetch http://cn.archiv ...

  6. [置顶] apt-get update 更新失败----如何清除破损而且陈旧的PPA仓库 (W: Failed to fetch http://ppa.launchpad.net/jonathonf/pyt)

    我使用sudo apt-get update之后,更新失败,遇到如下错误. W: Failed to fetch http://ppa.launchpad.net/jonathonf/python-3 ...

  7. 接收新信息,在会话中看不到(thread表数据插入/更新失败)

    分析原因:收到短信,sms表插入信息,触发器会自动更新thread表,更新失败导致一直有一条未读信息数量显示,但在会话列表中却看不到. (偶现,低概率. 解决方法:接收新信息插入后,立即查询threa ...

  8. Android SDK Manager 更新失败的解决方法

    Android SDK Manager 更新失败的解决方法 原文地址 最近使用Android SDK Manager 更新Android SDK tools 发现经常更新失败,获取不到更新信息: Fe ...

  9. Win7 & Win 8系统更新失败的解决

    转自:Win 8系统更新失败的解决(原创) 这几天win 8又出了一大堆更新,而且是一更新完就要重启,重启之后照例要进入更新包的安装过程.不爽的是,屡屡在重启后出现"配置Windows更新失 ...

随机推荐

  1. C#USB录像视频拍照-代码

    论坛帖:http://bbs.csdn.net/topics/390536016 using System; using System.Collections.Generic; using Syste ...

  2. maven打包到本地仓库里面

    mvn install:install-file -Dfile=D:/你的包名  -DgroupId=com.sdk4j -DartifactId=sdk4j -Dversion=1.0 -Dpack ...

  3. Win32 SDK - 打开文件对话框

    OPENFILENAME ofn; // common dialog box structure TCHAR szFile[MAX_PATH]; // buffer for file name // ...

  4. 黑马程序猿——25,打印流,合并流,对象序列化,管道流,RandomAccessFile

    ------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...

  5. [Jobdu] 题目1455:珍惜现在,感恩生活

    题目描述: 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.请问:你用有限的资金最 ...

  6. pcie dma的玩法

    There is some issue with the implement script. So I took the manual steps. 1. Created the pcie core ...

  7. Vim-复制选中内容至系统剪贴板,光标移动到指定行的行首和行尾

    1.全选并复制到系统剪贴板 ggVG或ggvG 然后 "+y gg 让光标移到首行,在vim才有效,vi中无效 V 是进入Visual(可视)模式 G 光标移到最后一行 "+y 复 ...

  8. vue+element-ui路由配置相关

    vue+element-ui路由配置相关 转自:http://www.cnblogs.com/MonaSong/p/6703804.html vue-router2中说明了,子路由前面可以不加'/', ...

  9. Shell脚本中调用另外一个脚本的方法

    (转载): 在Linux平台上开发,经常会在console(控制台)上执行另外一个脚本文件,经常用的方法有:./my.sh 或 source my.sh 或 . my.sh:这三种方法有什么不同呢?我 ...

  10. JS 遍历 json key ,获取设置可变的key

    $(rec.data[id]).each(function(){ for(var key in this){ if(key == value){ console.info(this[key].desc ...