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