我有这个代码可以创建一个图像:
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的新手。
答案 0 :(得分:4)
我认为问题是NSString中的字符串格式,您应该将代码更改为:
[result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d", rNumber]]];
因为rNumber是一个int。
你应该释放背景和结果,因为每次出现视图时都会调用viewWillAppear,因此会导致内存泄漏。