2010-01-22 55 views
0

我有UIScrollView的3個UIImages,我在下面的方式初始化這些圖片:UIImage的分配問題

UIImage *dimage = [[UIImage alloc] initWithData:data]; 

如果數據是從NSData的URL請求得到。在此之後,我緩存圖像。 當我檢查內存分配時,3個映像每個佔用472 Kb,並且CoreGraphics庫中的「img_data_lock」請求了分配。 當我檢查磁盤緩存上的圖像大小時,它每個都是230Kb。

我不知道如何才能佔用更多的空間。我希望我的問題很清楚。

回答

0

不確定你在看什麼「磁盤緩存」,但內存和磁盤使用率只有微弱的相關性。用於創建UIImage的數據只是對象實際使用的數據的一部分。這意味着活動對象可以使用比創建它的數據更多的內存。爲了進一步複雜化,UIImage會在內存不足的情況下自行清除圖像數據,因此UIImage對象的大小在其存在過程中可能會有很大差異。

+0

感謝TechZen,磁盤緩存意味着設備上的「/Library/Cache」文件夾,我將其用於臨時緩存。
所以沒有什麼我可以做的。 – Nnp 2010-01-22 03:31:58

+0

我認爲你沒有問題。磁盤上的數據大小與內存中對象的大小之間幾乎沒有關係。除非清除數據,否則UIImage對象將始終大於數據。請記住,數據不是UIImage對象本身,而只是它的一部分。 UIImage對象必須存儲除原始數據之外的其他信息。其他信息使其大於數據。 – TechZen 2010-01-22 14:21:48

+0

感謝TechZen,我只是關注內存,當內存提升1MB而移動到這個特定的視圖,所以它引起了我的注意力。所以現在我只在scrollview中保存3張圖片,只是爲了節省內存。 – Nnp 2010-01-22 19:15:03