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

Ios iPad应用程序在将文件下载到设备时崩溃,ios,ipad,download,gdb,nsdata,Ios,Ipad,Download,Gdb,Nsdata,我有一个从后端下载视频、图像和pdf的iPad应用程序,但过了一段时间(下载400 mb后),应用程序崩溃,控制台将我的gdb打印回来。向下 这是我用于视频文件的写入函数的一部分 更新 如果我释放NSData对象“mediaDataResponse”,应用程序会下载所有文件,但下载所有文件后会出现EXC_BAD_Access错误 有什么帮助吗 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocume

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

这是我用于视频文件的写入函数的一部分

更新

如果我释放NSData对象“mediaDataResponse”,应用程序会下载所有文件,但下载所有文件后会出现EXC_BAD_Access错误

有什么帮助吗

                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];

            }

当你在崩溃后启动应用程序时,它只是在停止的地方继续下载。有人有同样的问题吗?提前感谢。

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

您可以提供有关崩溃报告的详细信息吗?让我检查一下是否可以找到崩溃报告的更多详细信息。还有详细信息。我在下载文件时也出现了这个错误。“SendDelegateMessage(NSInvocation*):代理(\u selectionLayoutChangedByScrolling:)在等待10秒后返回失败。主运行循环模式:\u KCFurlConnectionPrivateUnloopMode”可能与问题有关。我也了解到了这一点。3月16日09:53:56未知报告崩溃[867]:已将崩溃报告保存到/Library/Logs/CrashReporter/LowMemory-2012-03-16-095356.plist使用uid:0 gid:0,synthetical\u euid:0 egid:0我已经尝试构建类似的东西,我将尝试!谢谢你的回答!