2010-12-20 93 views
0

请看下面的代码。帮帮我!选择复选框时,应用程序崩溃

自从我的应用程序崩溃时,我选择复选框时,代码中是否存在任何泄漏或问题。

寻找任何帮助...

谢谢!

// checkbox at normal state 
copyMailCheckbox = [[UIButton alloc] initWithFrame:CGRectMake(150, 220,120 ,40)]; 
UIImage *normalStateImage = [UIImage imageNamed:@"checkbox.jpg"]; 
[copyMailCheckbox setImage:normalStateImage forState:UIControlStateNormal]; 
[normalStateImage release]; 

// checkbox at selected state UIImage 
UIImage *checkedStateImage = [UIImage imageNamed:@"checkbox-checked.jpg"]; 
[copyMailCheckbox setImage:checkedStateImage forState:UIControlStateSelected]; [checkedStateImage release]; 

// checkbox at highlighted state UIImage 
UIImage *highlightedStateImg = [UIImage imageNamed:@"checkbox-pressed.jpg"]; 
[copyMailCheckbox setImage:highlightedStateImg forState:UIControlStateHighlighted]; [highlightedStateImg release]; 
[self addSubview:copyMailCheckbox]; 
[copyMailCheckbox release]; 

回答

3

您有一个分配错误的位置:

UIImage *normalStateImage = [UIImage imageNamed:@"checkbox.jpg"]; 
[copyMailCheckbox setImage:normalStateImage forState:UIControlStateNormal]; 
[normalStateImage release]; 

这UIImage对象normalStateImage不需要你调用释放它。记住分配规则,如果您调用init,保留或复制,则释放该对象。否则,你不应该这样做,因为你没有它的所有权。

PD:还请检查一下sudo rm -rf指的是什么。

+0

这很可能是你的问题,如果这是一个错字。 – 2010-12-20 04:32:03

1

此:

*checkedStateImage = [UIImage imageNamed:@"checkbox-checked.jpg"]; 

这:

*highlightedStateImg = [UIImage imageNamed:@"checkbox-pressed.jpg"]; 

你正在创建一个未知的指针或东西。我不知道怎么说了过去的编译器警告,但你需要指定UIImage,例如...

UIImage *highlightedStateImg = [UIImage imageNamed:@"checkbox-pressed.jpg"]; 

另外,我建议你使用.png的图像。虽然不是必需的,但它可以加快一些图像处理操作,并且是图像的一般推荐格式。

编辑:它看起来像你的代码是一个错字,所以请忽略这一点。

+0

不,这是一个错字...你可以看看代码,并提供一些指导我的问题...... – user198725878 2010-12-20 04:27:52