我对 Core Data 和 NSMutableArray 有疑问。阅读本文档:https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdPerformance.html#//apple_ref/doc/uid/TP40003468-SW2 在“故障行为”一章” 我读到:由于 isEqual 和 hash 不会导致触发错误,因此托管对象通常可以放置在集合中而不会触发错误。
好的,出于这个原因,我知道我可以: - 获取 managedObjectContext - 将所有托管对象放入一个数组中(对象包含图像数据)
不会触发错误并浪费内存(直到第一次访问对象),对吗?
但是,由于某种原因,当我尝试将结果放入 NSMutableArray 时,Core Data 会触发错误
NSArray *fetchResults = [self.managedObjectContext executeFetchRequest:request error:&error]; //this line does'n fire a fault
self.cache = [NSMutableArray arrayWithArray:fetchResults]; //this line fires a fault
self.cache 只是一个 NSMutableArray。在最后一行代码之后,我看到通过仪器增加的内存使用量(我在数据库中有 50MB 的图像,内存立即从 2-3Mb 变为 52-53MB。
有什么建议吗?谢谢