设置UIButton背景图像会导致内存崩溃

时间:2013-11-12 23:25:31

标签: ios objective-c uibutton uiimage

更新: 或多或少地解决了。尝试了最简单的解决方案(当然是最后一个),只需用另一个替换图像。果然,没有崩溃。仍然非常好奇是什么导致了这一点。但至少我知道我可以通过简单地修复另一个图像来解决它。我正在使用的那个是从剪贴画网站下载并在inkScape中修改...也许它已经被破坏了。我可能永远不会知道,但欣赏任何见解!

我从未遇到过这种情况,我尝试了三种方法(详见下文)并且有点难过。我已经在两个不同的设备上测试了相同的结果。

我有一个视图,从nib加载,包含带有常规ole UIButton的图像视图作为子视图。每次我设置该按钮的背景图像时,只要父视图加载,我就会收到内存警告。当我点击按钮时,由于内存压力,我崩溃(或者更确切地说,iOS杀了我)。当我没有设置图像时,一切运行正常。

我试过了: 1.只需在笔尖中设置图像。 2.在父的viewWillAppear中,设置图像如下:

[button setBackgroundImage:[UIImage imageNamed:@"yellowPencil.png"]
 forControlState:UIControlStateNormal];

3。或者,将图像设置为:

NSString *path = [[NSBundle mainBundle]pathForResource:@"yellowPencil" ofType: @"png"];
UIImage *pencil = [UIImage imageWithContentsOfFile:path];
[button setBackgroundImage:pencil forControlState:UIControlStateNormal];

方法1和2产生重复的内存警告,好像有什么东西在循环,当我点击按钮时崩溃。

当我点击按钮时,方法3始终生成两个警告,并因内存压力而崩溃。

同样,将图像排除在等式之外可以解决问题。该图像是我在inkScape中创建的PNG,尺寸正确,带有@ 2x版本。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

如果您不需要Alpha通道,最好使用jpeg。