2013-12-11 54 views
7

我試圖找到內存泄漏的來源,這裏詳述:CG柵格數據 - CGProviderCreateWithCopyOfData - 無法釋放?

Unable to Release Quartz 2D and Core Text created Images

當我使用的儀器,我可以看到,有一些所謂的CG柵格數據的規模穩步增長,這是從來沒有公佈過。

有誰知道什麼可能導致這種情況,以及如何補救?看起來這可能是某種形式的圖像緩存,但是可以從代碼中清除它嗎?

+0

如果關閉此屏幕,內存是否會釋放?如果是,那麼你需要在使用圖像的代碼周圍添加@autoreleasepool(這可能是一個循環)。 –

+0

你可以附上你的代碼嗎? –

回答

0

我與CG光柵數據存儲器的問題相同,只需重複推動和彈出視圖控制器即可增加。我花了一段時間認爲這是一個繪圖代碼的問題。我終於將它追蹤到了一個委託,它不會弱引用正在被推送和彈出的視圖控制器,所以當我彈出視圖控制器時,它並未被釋放。 CG柵格數據恰好是該視圖控制器佔位面積的最大部分,所以我最初錯誤地將問題歸結爲這個問題,當時它真的是視圖控制器本身沒有被釋放(因此,沒有公佈其觀點,其中有CG柵格數據)。

簡而言之:如果您發現CG Raster Data存在內存泄漏,請查看可能有視圖的視圖控制器,並確保它們正在發佈。