2011-05-12 62 views
0

的NSManagedObject的我创建的NSManagedObject的(覆盖)情况下,使用insertNewObjectForEntityForName:优化配置未保存

如果我永远不会保存上下文(并没有增加它的保留计数),我还需要使用obj.managedObjectContext deleteObject:obj删除呢?

如果是这样,并假设它被保留,我首先删除它,然后释放它?

回答

0

一旦你使用insertNewObjectForEntityForName:对象将是你的NSManagedObjectContext内,无论您是否保留插入通话NSManagedObject产品。它与这个问题无关,你是否保留了上下文。

您可以通过以适当方式查询上下文来始终获取该条目的实例。它可能是插入给你的原始NSManagedObject实例,或者它可能不是。取决于你的应用程序的运作。

如果你想要的对象离开那里再次,你需要从上下文删除或恢复到最近一次保存的状态莫名其妙。

+0

只是为了确保我理解正确:无论上面的解释,我仍然需要管理该对象的保留计数,因为任何其他正常的对象,以避免内存泄漏。正确? – Ovesh 2011-05-12 12:58:49

+0

作为类方法insertNewObjectForEntityForName:返回一个自动释放对象。如果你想抓住那个物体,你需要通过放入一个容器或明确地保留。但该对象只是数据库条目的表示,所以一旦你插入它的存在,直到你删除或不保存。 – 2011-05-12 14:15:53

+0

是的,我明白关于被退回的对象的一切。我只是想了解一般NSManagedObject的内存管理方面。我假设我有一个对象(通过inserNewObject或通过获取),当我不再需要内存中的实际对象时,无论我是否需要将它存储在数据库中,它都需要像常规一样释放目的。再校正一次? – Ovesh 2011-05-12 19:06:42