gpt4 book ai didi

iphone - UIButton setBackgroundImage 占用大量内存

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:35 26 4
gpt4 key购买 nike

我正在使用以下代码:

UIImage *buttonImage;

if (p.placeImage != nil) {
buttonImage = [UIImage imageWithData:p.placeImage];
} else {
buttonImage = [UIImage imageNamed:@"bg_place_noimg.png"];
}

[imageButton setBackgroundImage:buttonImage forState:UIControlStateNormal];

当使用 Instruments 执行应用程序时,我可以看到 setBackgroundImage 消耗了大量内存。但是,如果我评论最后一行,它不会发生。有什么可能的原因吗?

编辑:

如果使用 p.placeImage == nil 和 imageNamed:@"bg_place_noimg.png"内存使用正常。 p.placeImage 是我在 Core Data 中使用的一个 Transformable 值,用于存储从 Internet 下载的图像 NSData。

最佳答案

注释掉最后一行会导致消耗更少的内存,我并不感到惊讶。当您将该图像设置为按钮的背景时,该图像很可能会被按钮保留,因此图像会保留在内存中。如果您不将图像用作按钮背景,则 UIImage 的保留计数为 0,因此系统可以在必要时回收其内存。

Kristopher 关于 imageWithData 和 imageNamed 之间差异的理论也正确。查看 UIImage 文档中每个初始化程序的讨论部分。

关于iphone - UIButton setBackgroundImage 占用大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2355581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com