以编程方式添加UIImageView后内存使用率上升

时间:2014-05-30 17:18:14

标签: ios uiimageview

我想写一个动作,当按下按钮时,它会向视图添加图像

-(IBAction)AddButtonTouch:(id)sender {

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(20+[[self.SumTextField text]integerValue]*8, 220, 8, 40)] ;
NSString *imgFilepath = [[NSBundle mainBundle] pathForResource:@"pet" ofType:@"jpg"];
[imgView setImage:[[UIImage alloc] initWithContentsOfFile:imgFilepath]];

[self.view addSubview:imgView];
}

每次调用Action时,设备内存的使用量都会增加5MB。解决方案可能非常简单,但我需要帮助。

2 个答案:

答案 0 :(得分:2)

预计内存会上升,因为每次按下该按钮,您都会添加另一个新的图像视图。他们只是堆积在彼此之上。每个人都有一个图像,因此有一个大的支持商店。

减少内存使用量:

  • 如果您不需要,请不要添加其他图片视图。

  • 如果必须,请将图像尺寸缩小到显示尺寸(在代码中很容易),然后再将交给图像视图。请记住,内存中保存的图像随着大小的增加需要更多RAM 指数

答案 1 :(得分:0)

是的,使用当前代码,每次点击按钮,您创建一个新的UIImageView,并将其添加到上一个。如果这不是故意的,我建议你将它存储在iVar中,以便重用它/检查它是否已经存在并相应地修改动作方法中的逻辑。