我有一个滚动视图,其中包含保存在数组中的多个UIImageViews。每个UIImageViews具有相同的背景图像,但是具有唯一的蒙版。当这些图像未显示在屏幕上时,我想取下遮罩以节省内存。当必须创建或删除掩码时,将调用以下函数。但是,在这种情况下,当imageView遮罩设置为nil时,内存占用将不减少。
Warning: Failed prop type: Component must be a valid element type!
in WrapperComponent
如何解决这个问题?作为初学者,我一直在寻找答案的日子,非常感谢您的帮助。
答案 0 :(得分:1)
代码中最大的对象是用作UIImageView的image
的UIImage(用作遮罩)。 (UIImageView本身可以忽略不计。)通过说UIImage(named:)
加载的UIImage是 cached ;因此,删除UIImageView不会导致内存减少。但是好消息是,下次执行此操作时,图像已被缓存,因此内存也不会增加。
还请注意,如果UIImage很大,则即使您将其显示为小(即,如果使UIImageView进行将UIImage大小减小到其自身大小的工作),其内存也将很大。那是巨大的内存浪费。有一些标准技术可以按照显示所需的实际大小加载或重绘UIImage,从而可以节省大量内存。
答案 1 :(得分:0)
请注意,UIImage(named:)的文档指出它确实缓存了它加载的图像。因此,除非收到内存警告,否则取消映像设置不会减少内存消耗。图像仍在缓存中。如果您真的不想缓存,请使用其他不缓存的初始化方法之一,例如init(data :)或init(contentsOfFile:)。