次のコードを使用して、サーバーから多くのファイルをダウンロードします。これらのファイルの一部はビデオファイル(> 60Mo)です。
この関数はループで呼び出されます。それは小さなファイルで完璧に動作します...
ダウンロードする大きなファイルが多すぎると(状況によって異なります)、メモリの警告が表示され、アプリケーションがクラッシュします。
注:プロジェクトはARCです
- (bool) copyWebFile:(NSString *)url toFile:(NSString *)toFile ;
{
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:url]] ;
if (data)
{
NSError *error ;
if ([[NSFileManager defaultManager] fileExistsAtPath:toFile])
{
NSLog(@"Existant %@", toFile) ;
[[NSFileManager defaultManager] removeItemAtPath:toFile error:nil] ;
}
if ([data writeToFile:toFile options:NSDataWritingAtomic error:&error]==NO)
{
NSLog(@"@Error creating file-%@ \n", toFile) ;
NSLog(@"@Error description-%@ \n", [error localizedDescription]) ;
NSLog(@"@Error suggestion-%@ \n", [error localizedRecoverySuggestion]) ;
NSLog(@"Error reason-%@", [error localizedFailureReason]) ;
}
else
{
return(true) ;
}
}
return(false) ;
}
私のアプリケーションデリゲートでは、このコードを追加しました:違いはありません。
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
[[NSURLCache sharedURLCache] removeAllCachedResponses] ;
}