2012-03-16 84 views
2

我有一个iPad应用程序,可从后端下载视频,图像和PDF,但过了一会儿(400 MB下载后)应用程序崩溃,控制台将我打印回gdb。 Down将应用程序下载到设备时,iPad应用程序崩溃

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

UPDATE

的应用程序做下载的所有文件,如果我释放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]; 

      } 

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

+0

你能提供关于崩溃报告的详细信息吗? – tarmes 2012-03-16 08:21:35

+0

让我检查一下我是否可以找到崩溃报告的更多细节。 – Ryan 2012-03-16 08:44:54

+0

也是一个细节。我在下载文件时遇到此错误。 “SendDelegateMessage(NSInvocation *):委托(_selectionLayoutChangedByScrolling :)在等待10秒后失败返回主运行循环模式:_kCFURLConnectionPrivateRunLoopMode”也许这与问题有关。 – Ryan 2012-03-16 08:46:22

回答

2

我想你可能会试图加载所有400MB的文件到内存中(基于NSData的使用),这可能不是正确的方式去(并通过您的LowMemory评论证实)。您可能希望拥有自己的NSURLConnection委托,该委托在接收到响应时打开文件,并将所有字节直接附加到该文件(不保留在NSData中)。

+0

我已经试图建立这样的事情,我会试试这个!感谢你的回答! – Ryan 2012-03-19 14:18:23