我正在開發應用程序,在可縮放的UIScrollView中有一個視圖。當用戶放大或縮小時,我將UIScrollView中的視圖重新繪製爲非常銳利。該視圖具有使用CGContextDrawTiledImage繪製的背景圖像。在不同的縮放環境下使用CGContextDrawTiledImage導致海量內存增長
我注意到,每次切換到新的縮放級別時,內存使用量都會增加。它看起來像CGContextDrawTiledImage保持緩存在不同大小的圖像的某處。所以,如果我從1.0放大到1.1倍,內存使用量會增加。回到1.0並不會導致它增長,但隨後到1.05然後1.2導致它增長兩倍。回到1.1並沒有增長。當然,縮放級別在用戶控制之下,所以我無法控制發生多少縮放級別。現在我的背景圖像是一種巨大的(512x512),所以這會導致內存使用迅速增加非常。它不會在儀器中顯示爲內存泄漏,只是額外的分配永遠不會被釋放。
我試圖找到一種方法來釋放似乎正在創建的緩存,但沒有運氣。例如,它似乎沒有響應低內存警告。
我也嘗試將視圖的backgroundColor設置爲使用colorWithPatternImage創建的UIColor,但這不起作用,因爲我通過更改圖形上下文的CTM而不是通過設置視圖的變換來進行縮放。
關於如何防止內存使用被炸燬的任何想法?
我剛剛試了一下。它具有與上述相同的效果。太糟糕了,因爲它看起來很有前途。 – Jacques 2010-10-17 01:36:22