核心数据每次获取时都会为同一个NSManagedObject返回一个不同的对象实例。 为什么是这样?

我最近注意到,如果我获取一个ManagedObject,其中我可以validation模型中只有一个,并且在应用程序的任何位置都没有保留,每次获取返回对象时,它都是一个不同的实例(带有指向一个不同的内存地址)。 为什么是这样?

如果没有人保留它,Core Data可以免费发布它。 如果你再次要求,它可能会在不同的内存位置。 你不能指望它是相同的对象实例。

一个给定的NSManagedObject绑定到一个特定的NSManagedObjectContext ,所以如果你改变上下文,你必然会改变对象。 如果对象发生故障,如果MOC释放了对象,也可能会收到一个新的实例。 这是Core Data如何保持低内存使用率的一部分。