2010-01-22 103 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