Приложение iPad вылетает при загрузке файлов на устройство - PullRequest
2 голосов
/ 16 марта 2012

У меня есть приложение для iPad, которое загружает видео, изображения и PDF-файлы из бэкэнда, но через некоторое время (после 400 Мб загрузки) приложение вылетает, и консоль выводит мне обратно gdb.Down

- это часть функции записи, которую я использую для видеофайлов.

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

            }

Когда вы запускаете приложение после сбоя, оно просто продолжаетзагрузка где остановилась.У кого-нибудь была такая же проблема?Заранее спасибо.

1 Ответ

2 голосов
/ 19 марта 2012

Я думаю, что вы, возможно, пытаетесь загрузить все 400 МБ файла в память (основываясь на использовании NSData), что, вероятно, не является правильным способом (и подтверждается вашим комментарием LowMemory).Возможно, вы захотите иметь свой собственный делегат NSURLConnection, который открывает файл при получении ответа и добавляет все байты непосредственно в этот файл (не сохраняя его в NSData).

...