NSEntityDescription仍然存在于内存中?

时间:2013-12-09 15:03:48

标签: ios core-data

现在我有一个核心数据实体“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) 

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

1 个答案:

答案 0 :(得分:1)

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

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

第二个是[context refreshObject:yourManagedObject mergeChanges:NO]。它允许释放物体,或将其变成故障。

希望它有所帮助。