我想我有一个问题,也许链接到核心数据中的保留周期。 的代码是一个后续,其中self.image也是NSManagedObject:保留周期与核心数据
- (void)setImage:(UIImage*)image1 andThumbnail:(UIImage*)image2
{
self.image.data = UIImageJPEGRepresentation(image1, 0.85); // This is autoreleased
self.thumbnail = UIImageJPEGRepresentation(image2, 0.85); // This is autoreleased
}
显然,“self.image.date =”已保留一个是从来没有公布过(我认为这是自我之间.image和自我)。因为这个自我物体永远不会被释放,因此泄漏。
编辑:基本上我有和这里一样的问题:https://devforums.apple.com/message/246219#246219 我使用完全相同的结构,其中前面代码中的self与给定链接中的Bar相对应。我也有相同的视图控制器结构。但是,refreshObject不起作用。
我试图使用NSManagedObjectContext refreshObject方法来打破保留周期(如Apple文档中所建议的)。它对retainCount没有影响。我可能没有正确使用它,但我无法找到关于它的很多信息。如果我使用NSManagedObjectContext:reset:当我回到它时,我在根视图控制器中发生崩溃。
谢谢!
我不会删除实体。 其实我通过使用refreshObject:self.image解决了这个问题。没有这一点,我认为我只是因为相互的关系而保持着自我和自我之间的保留循环。 – Kamchatka 2010-06-26 21:01:40
我不确定你的问题是什么,但只是将NSData实例保存到管理对象中不应导致泄漏。这是一个非常常见的操作。 – TechZen 2010-06-27 14:26:23