Objective c EXC\u错误\u访问致命错误
我得到了创建图像的代码:Objective c EXC\u错误\u访问致命错误,objective-c,ios,xcode,exc-bad-access,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 setIm
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];
这将出现在我的视图中。当我按下按钮时,会发生以下情况:
- (IBAction)oneToSix {
int rNumber = (arc4random() % 6) + 1;
[result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@", rNumber]]];
}
但它得到了这个致命错误:线程一:当我按下按钮时,程序在setImage
部分收到信号:“EXC\u BAD\u ACCESS”。
。有什么问题?我不熟悉Objective C。我认为问题在于NSString中的字符串格式,您应该将代码更改为:
[result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d", rNumber]]];
因为rNumber是一个int
并且您应该释放背景和结果,因为每次显示视图时都会调用ViewWillDisplay,因此会导致内存泄漏。我认为问题在于NSString中的字符串格式,您应该将代码更改为:
[result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d", rNumber]]];
因为rNumber是一个int
您应该释放背景和结果,因为每次显示视图时都会调用ViewWillEmbeen,因此会导致内存泄漏。谢谢您的回答。我有带ARC(自动参考计数)的Xcode 4.2。我还需要释放它们吗?当使用ARC时,它会在视图上释放吗?它会消失吗?是的,会的,请尝试阅读这里,谢谢你的回答。我有带ARC(自动参考计数)的Xcode 4.2。我还需要释放它们吗?当使用ARC时,它会在视图上释放吗?它会消失吗?是的,请尝试在此处阅读