我有一个模态视图控制器,当它自动解除时会崩溃。错误是EXC_BAD_ACCESS(yipee)。我试着用NSZombie来解决这个问题。我得到以下内容:
2010-10-20 17:15:58.936 [24058:207] AddRunningClient在非零客户端计数上启动设备 2010-10-20 17:16:06.846 [24058:207] * - [ViewController retain]:消息发送到解除分配的实例0x6c2d4a0
这是什么意思 - 它是否意味着消息被发送到Viewcontroller或消息被发送到Viewcontroller中的对象?
我真的被卡住,因为线程似乎是主要的:(
提前感谢所有人的帮助,
马丁
修改
感谢大家的快速回复。以下是我展示视图控制器的方法:
-(IBAction)letsstartGame {
ViewController * sl = [[ViewController alloc] initWithNibName:@"ViewController" bundle:[NSBundle mainBundle]];
self.viewLink = sl;
[sl release];
[mainMenu stop];
[mainMenu setCurrentTime:0.0];
[self presentModalViewController:viewLink animated:NO];
[viewLink release];
self.viewLink = nil;
}
并且这样解雇:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (waitingOver) {
[backgroundMain stop];
[fireworks stop];
[self dismissModalViewControllerAnimated:NO];
}
}
答案 0 :(得分:2)
这意味着你有一个类型为ViewController
的对象的实例,它被解除分配,然后你尝试retain
它。
修改强>
你过度释放了这个物体。这是你正在做的事情:
ViewController * sl = [[ViewController alloc] initWithNibName:@"ViewController" bundle:[NSBundle mainBundle]]; //allocated, has a +1 retain count
self.viewLink = sl; //assuming a retain property, has a +2 retain count
[sl release]; //releasing, now has +1 retain count
....
[viewLink release]; //releasing, now has a 0 retain count
self.viewLink = nil; //attempting to release stale pointer, will result in a crash (perhaps not immediately, but eventually)
摆脱[viewLink release]
行。在那里拥有它是错误的。
答案 1 :(得分:1)
这意味着您正在向已释放的实例发送消息。 因此,代码中的某个位置无法保留对象(可能是ViewController)或者过早地释放它。
如果您可以将代码发布到创建可能对我们进行调试有帮助的View Controller的位置。
答案 2 :(得分:1)
该消息基本上是说您正在尝试向已经被释放(释放并释放内存)的对象发送消息(调用函数)。如果您可以发送更多代码,我可能会尝试确定原因。