• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 将文件下载到设备时 iPad 应用程序崩溃

[复制链接]
菜鸟教程小白 发表于 2022-12-11 22:08:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个 iPad 应用程序,可以从后端下载视频、图像和 pdf 文件,但一段时间后(下载 400 mb 后)应用程序崩溃并且控制台将 gdb 打印回来。下

这是我用于视频文件的写入功能的一部分。

更新

如果我释放 NSData 对象“mediaDataResponse”,应用程序会下载所有文件,但在下载所有文件后给我一个 EXC_BAD_ACCES 错误。

有什么帮助吗?

                NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
                NSString *docsPath = [paths objectAtIndex:0]; 
                NSString *imageCacheDirPath = [docsPath stringByAppendingPathComponent"video"];

                if (![[NSFileManager defaultManager] fileExistsAtPath:imageCacheDirPath])
                {
                    [[NSFileManager defaultManager] createDirectoryAtPath:imageCacheDirPath 
                                              withIntermediateDirectories:NO 
                                                               attributes:nil
                                                                    error:NULL];
                }

                NSString *filename = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat"/Documents/video/%@.%@",cacheFileName,extensionstring]];
                [mediaDataResponse writeToFile:filename options: NSDataWritingAtomic error: &error];

                //Thumbnail
                NSArray *thumbpaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
                NSString *thumbdocsPath = [thumbpaths objectAtIndex:0]; 
                NSString *thumbimageCacheDirPath = [thumbdocsPath stringByAppendingPathComponent"thumbnail"];

                if (![[NSFileManager defaultManager] fileExistsAtPath:thumbimageCacheDirPath])
                {
                    [[NSFileManager defaultManager] createDirectoryAtPath:thumbimageCacheDirPath 
                                              withIntermediateDirectories:NO 
                                                               attributes:nil
                                                                    error:NULL];
                }

                NSURL  *thumburl = [NSURL URLWithString:media.mediaThumbnail];
                NSData *thumburlData = [NSData dataWithContentsOfURL:thumburl];

                NSString *thumbfilename = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat"/Documents/thumbnail/%@.jpg", thumbcacheFileName]];
                [thumburlData writeToFile:thumbfilename options: NSDataWritingAtomic error: &error];

            }

当您在崩溃后启动应用程序时,它会继续下载它停止的位置。有人有同样的问题吗?提前致谢。



Best Answer-推荐答案


我认为您可能正在尝试将所有 400MB 的文件加载到内存中(基于 NSData 使用情况),这可能不是正确的方法(您的 LowMemory 评论证实了这一点)。您可能希望拥有自己的 NSURLConnection 委托(delegate),该委托(delegate)在收到响应时打开文件,并将所有字节直接附加到该文件(而不是将其保存在 NSData 中)。

关于ios - 将文件下载到设备时 iPad 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9733729/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap