帮我!选中复选框时,应用程序崩溃

时间:2010-12-20 04:14:09

标签: iphone iphone-sdk-3.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];

2 个答案:

答案 0 :(得分:3)

这里有分配错误:

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

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

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

答案 1 :(得分:1)

此:

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

和此:

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

您正在创建未知指针或其他内容。我不知道如何通过编译器警告,但你需要指定UIImage,例如......

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

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

修改:您的代码看起来像是一个拼写错误,所以请忽略这一点。