我从服务器下载了一些 gzipped xml 文件,将其保存到文档文件夹并解压缩每个文件。之后我删除 .gz 文件。我对或多或少的 500 个文件循环执行此操作。当我使用仪器时,我看到在这个过程之后实时字节或多或少是 470MB。当我等待几秒钟时,ARC 将其清除,应用程序将使用 5mb 活动字节。但是因为它是一个同步过程,所以当我在下载和解压缩后没有停止时,我的应用程序会立即收到内存警告。至少我认为应该可以强制ARC释放内存?还是我有一个真正糟糕的代码,但我仍然没有看到?
非常感谢任何帮助或提示。
下载和解压:
for(NSString *filePath in filePaths){
NSString *localPath = [[DownloadManager sharedInstance] downloadFile:filePath];
if(localPath){
//downloaded correctly
if([self unzipFileAtPath:localPath]){
[FileUtility deleteFileAtPath:localPath];
}
}
}
解压方法:
+ (BOOL)unzipFileAtPath:(NSString *)path
{
NSData *gzData = [NSData dataWithContentsOfFile:path];
NSData *ungzippedData = [gzData gunzippedData];
BOOL success = [ungzippedData writeToFile:[FormatUtility pathWithoutGz:path] atomically:NO];
ungzippedData = nil;
gzData = nil;
return success;
}