Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios N实体描述是否仍存在于内存中?_Ios_Core Data - Fatal编程技术网

Ios N实体描述是否仍存在于内存中?

Ios N实体描述是否仍存在于内存中?,ios,core-data,Ios,Core Data,现在我有了一个核心数据实体“AAA”,我使用一种方法来获取其结果: - (AAA *)result{ NSEntityDescription *Entity = [NSEntityDescription entityForName:@"AAA" inManagedObjectContext:self.managedObjectContext]; NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init]; [fe

现在我有了一个核心数据实体“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; } -(AAA*)结果{ NSEntityDescription*实体=[NSEntityDescription entityForName:@“AAA”在managedObjectContext:self.managedObjectContext]; NSFetchRequest*fetchRequest=[[NSFetchRequest alloc]init]; [FetchRequestSetEntity:aaaEntity]; n错误*错误=nil; NSArray*fetchRequestResult=[self.managedObjectContext executeFetchRequest:fetchRequest错误:&error]; AAA*AAA=fetchRequestResult.lastObject; 返回aaa; } 然后我使用Xcode仪器检查内存状态,它显示:

VM:Core Data Object IDs 4.02MB(Live Bytes) VM:核心数据对象ID 4.02MB(活动字节)
实体仍然存在于内存中吗?

首先,我要说的是,在处理核心数据时,不应该担心内存。在引擎盖下,框架为您管理内容。检索对象时,核心数据将填充数据存储在其中的缓存。这样,进一步的回迁将不会命中磁盘,而只命中缓存

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

第二个是
[上下文刷新对象:yourManagedObject合并更改:否]
。它允许释放对象,或将其转化为故障


希望能有所帮助。

首先,我要说的是,在处理核心数据时,不应该担心内存问题。在引擎盖下,框架为您管理内容。检索对象时,核心数据将填充数据存储在其中的缓存。这样,进一步的回迁将不会命中磁盘,而只命中缓存

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

第二个是
[上下文刷新对象:yourManagedObject合并更改:否]
。它允许释放对象,或将其转化为故障


希望有帮助。

在我停止运行应用程序之前,核心数据对象ID将始终存在于内存中。……在我停止运行应用程序之前,核心数据对象ID将始终存在于内存中。……@Steve.DC.Tang抱歉。我不明白你在问什么。您能更好地解释一下吗?谢谢您的回答~顺便说一句,我们可以使用NSFetchResultController从实体获取结果,但它似乎更适合UITableView。除了NSFetchResultController之外,上面的模式(像我的方法)是从实体获取结果的唯一方法吗?要获取结果,请使用
NSFetchRequest
。但您可以返回文档中描述的不同结果类型。请参阅
resultType
“在处理核心数据时,您不应该担心内存问题”-不,这取决于您对核心数据所做的操作。有时,您可能需要考虑这一点。“进一步的抓取不会命中磁盘,而只命中缓存”-这一点太模糊了。进一步获取的确切性质是什么?当然,仅对该实体的进一步提取只能命中行缓存。但所示的获取请求肯定仍会检查持久存储,以查看是否存在该实体类型的任何新实例。@Steve.DC.Tang抱歉。我不明白你在问什么。您能更好地解释一下吗?谢谢您的回答~顺便说一句,我们可以使用NSFetchResultController从实体获取结果,但它似乎更适合UITableView。除了NSFetchResultController之外,上面的模式(像我的方法)是从实体获取结果的唯一方法吗?要获取结果,请使用
NSFetchRequest
。但您可以返回文档中描述的不同结果类型。请参阅
resultType
“在处理核心数据时,您不应该担心内存问题”-不,这取决于您对核心数据所做的操作。有时,您可能需要考虑这一点。“进一步的抓取不会命中磁盘,而只命中缓存”-这一点太模糊了。进一步获取的确切性质是什么?当然,仅对该实体的进一步提取只能命中行缓存。但所示的fetch请求肯定仍会检查持久存储,以查看是否存在该实体类型的任何新实例。