请查看我的以下代码。
我的代码中是否有任何泄漏或问题,因为我的应用程序在选中复选框时崩溃了。
寻求任何帮助......
谢谢!
// 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];
答案 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
作为图片。虽然不是必需的,但它可以加快一些图像处理操作,并且是图像的一般推荐格式。
修改:您的代码看起来像是一个拼写错误,所以请忽略这一点。