我想我有一個問題,也許鏈接到核心數據中的保留週期。 的代碼是一個後續,其中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