2013-08-27 2 views
1

Я работаю с ARC и используя этот код для загрузки данных из файла с зашифрованным размером 17,4 pdf.dataWithContentsOfURL - Обработка предупреждений с памятью

NSData *fileData =[NSData dataWithContentsOfURL:docUrl]; 
NSMutableData *decPdf = // decrypt using third party library 
CFDataRef PDFData = (__bridge CFDataRef)decPdf; 
CGDataProviderRef provider = CGDataProviderCreateWithCFData(PDFData); 
PDFDocument = CGPDFDocumentCreateWithProvider(provider); 
CGDataProviderRelease(provider); 

на iPad1 после Low Memory warning приложения аварий на NSData *fileData =[NSData dataWithContentsOfURL:docUrl]. Есть ли что-то, что я могу сделать для более эффективного управления памятью в этой части? Если нет, как я должен правильно обрабатывать предупреждение о памяти для предотвращения сбоев?

ответ

0

В качестве быстрой проверки вы можете попробовать обернуть код в отдельный блок @autoreleasepool{}.

@autoreleasepool { 
    NSData *fileData =[NSData dataWithContentsOfURL:docUrl]; 
    NSMutableData *decPdf = // decrypt using third party library 
    CFDataRef PDFData = (__bridge CFDataRef)decPdf; 
    CGDataProviderRef provider = CGDataProviderCreateWithCFData(PDFData); 
    PDFDocument = CGPDFDocumentCreateWithProvider(provider); 
    CGDataProviderRelease(provider); 
} 
+0

Я не скачивая файл, это локальный URL – laucel

+0

Хорошо, сделал autoreleasepool обтекать работы? – Amar

+0

иногда предотвращает крах, иногда нет. Странно то, что тот же самый код с большим файлом, 39 мб, не сбой – laucel

Смежные вопросы