【问题标题】:UIImageView Memory ProblemUIImageView 内存问题
【发布时间】:2011-05-19 13:57:02
【问题描述】:

我的视图控制器中有一个 UIImageView 属性设置为“分配”。每次我点击一个按钮时,我都会将视图中的图像设置为新的东西。由于我使用另一个组件的方式,每次更改图像然后重新添加时,我都必须删除FromSuperView 并释放 UIImageView 。这似乎不会导致内存问题——当使用现有的 UIImageView 并且不释放它时,内存仍然会增加(但存在大小问题,这就是我重新创建它的原因)。

由于某种原因,使用 setImage 会增加应用程序的内存使用量大约 0.8mb(图像的大小)。当我不设置图像时,内存似乎保持相对恒定。任何想法为什么?

[self.pictureView setImage: img];
[self.pictureView setFrame: CGRectMake(0,0,[img size].width, [img size].height)];
[img release];

【问题讨论】:

    标签: iphone objective-c memory uiimageview


    【解决方案1】:

    我认为您正在泄漏 UIImageView,而当您泄漏 UIImageView 时,您正在泄漏其中的图像。

    这取决于你如何重新创建 UIImageView。确保在将新的图像视图设置为属性之前释放旧的图像视图。

    最好将该属性设置为retain,因为当您为retain属性设置新值时,它会释放旧实例。

    【讨论】:

    • 我也尝试将其作为保留,但似乎没有帮助...我正在执行 removeFromSuperView 并直接在显示的代码之前释放,然后我也重新初始化视图,如下所示: self.pictureView = [[UIImageView alloc] init];
    • 嗯,我认为这会导致价值的双重保留。 alloc 保留一次,retain 属性保留两次。尝试在“alloc] init]”之后调用 autorelease
    • 嘿,那(一半)修复了它:D 还有一个泄漏,但我认为它是无关的。谢谢!
    【解决方案2】:

    也许在设置图像清除引用之前将 UIImageView 设置为 nil?

    pictureView.image=nil;
    

    【讨论】:

      猜你喜欢
      • 2015-05-03
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 2017-09-13
      相关资源
      最近更新 更多