EXC_BAD_ACCESS致命错误

时间:2011-10-27 08:49:05

标签: objective-c ios xcode exc-bad-access

我有这个代码可以创建一个图像:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
background = [[UIImageView alloc]initWithFrame:CGRectMake(150, 60, 180, 180)];
result = [[UIImageView alloc]initWithFrame:CGRectMake(150, 60, 180, 180)];
[background setImage:[UIImage imageNamed:[defaults objectForKey:@"colour"]]];
[self.view addSubview:background];
[self.view insertSubview:result aboveSubview:background];

这是我的viewWillAppear。当我按下按钮时,会发生这种情况:

- (IBAction)oneToSix {
int rNumber = (arc4random() % 6) + 1;
[result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@", rNumber]]];
}

但是当我按下按钮时,Thread one: Program received signal: "EXC_BAD_ACCESS".部分会出现这个致命错误:setImage。问题是什么?我是Objective C的新手。

1 个答案:

答案 0 :(得分:4)

我认为问题是NSString中的字符串格式,您应该将代码更改为:

[result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d", rNumber]]];

因为rNumber是一个int。

你应该释放背景和结果,因为每次出现视图时都会调用viewWillAppear,因此会导致内存泄漏。