当我加载我的应用程序时,我下载了大约 10-15 个 JSON 文件并将它们存储到我的应用程序文档目录中——有些从几 KB 到 30MB 不等。
完成后,我需要从文档目录中获取它们中的每一个,转换为 NSDictionary,然后解析为 NSManagedObjects。
但是,当我使用下面的代码执行此操作时,当它通过每个 JSON 时,它似乎将它们保留在内存中,直到应用程序最终崩溃。Instruments 在“泄漏”工具中没有显示任何内容,但我的应用程序在内存中保留了大量内容。
下面是获取 JSON 文件的代码:
更新
- (void)parseDownloadedFiles
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
docDir = [docDir stringByAppendingString:@"/jsons"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *files = [fileManager contentsOfDirectoryAtPath:docDir error:&error];
if (files == nil) {
// error...
}
for (NSString *file in files)
{
NSString *fileName = [NSString stringWithFormat:@"%@/jsons/%@",
docDir, file];
NSString *content = [[NSString alloc] initWithContentsOfFile:fileName
usedEncoding:nil
error:nil];
NSDictionary *JSON =
[NSJSONSerialization JSONObjectWithData: [content dataUsingEncoding:NSUTF8StringEncoding]
options: NSJSONReadingMutableContainers
error: &error];
...create my NSManagedObjects & store
JSON = nil;
}
}
--
下面看看我的分配:
--
深入了解第一个 Malloc 44.79 带来的问题向我展示了这些问题:
-- 这是在上面代码的for循环中
NSLog 真的会导致这样的问题吗?