NSEntityDescription仍然存在于内存中?

现在我有一个核心数据实体“AAA”,并使用一种方法来获取其结果:

- (AAA *)result{
    NSEntityDescription *Entity = [NSEntityDescription entityForName:@"AAA" inManagedObjectContext:self.managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
    [fetchRequest setEntity:aaaEntity];

    NSError *error = nil;
    NSArray *fetchRequestResult = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

    AAA *aaa = fetchRequestResult.lastObject;
    return aaa;
}

然后我使用Xcode Instruments来检查内存状态,它显示:

VM:Core Data Object IDs 4.02MB(Live Bytes) 

该实体是否仍然存在于内存中?


首先我会开始说当你处理Core Data时你不应该担心内存。 在这个框架下,框架管理着你的东西。 当你检索一个对象时,核心数据会填充一个缓存数据的存储位置。这样,进一步的提取不会碰到磁盘,而只是缓存。

无论如何,你可以依靠两种不同的API来控制内存占用。 第一个是[context reset] 。 这将清除整个对象图(属于特定的上下文),就像您刚创建它一样。

第二个是[context refreshObject:yourManagedObject mergeChanges:NO] 。 它允许释放一个对象,或者将它变成一个错误。

希望能帮助到你。

链接地址: http://www.djcxy.com/p/36113.html

上一篇: NSEntityDescription still exist in memory?

下一篇: NSSortDescriptor issue