2011-02-23 99 views
0

我正在使用的应用程序是一个琐事测验。 如果你的答案错了,它会显示你正确的答案。EXC_BAD_ACCESS - NSString超出范围

正确答案是存储在一个字符串,像这样:

correctAnswer = [NSString stringWithFormat:@"1/100"]; 

当它的时间,以显示答案的用户,我设置标签的文本正确答案:

whatsRight.text = correctAnswer; 

这工作99%的时间。 但是 - 偶尔我会得到一个EXC_BAD_ACCESS终止应用程序,而correctAnswer字符串被认为是“超出范围”。这似乎总是发生在我的应用程序中的同一问题 - 上面显示的那个correctAnswer是1/100。尽管如此,它并不总是使用EXC_BAD_ACCESS使应用程序崩溃。很多时候,它工作得很好,在屏幕上显示答案,应用程序继续。偶尔它会崩溃。

任何帮助将不胜感激! 谢谢!

+1

EXC_BAD_ACCESS通常是由于尝试访问已释放的对象而导致的。您在correctAnswer上的保留政策是什么?另外,可能无关,但为什么使用stringWithFormat,当你没有格式?试试correctAnswer = @“1/100”。 – Julian 2011-02-23 01:45:20

回答

2

请尝试通过[correctAnswer retain]保留correctAnswer。我的想法是,correctAnswer对象可能是一个autorelease对象,因为你不保留它,它会被释放。

+0

这似乎已修复它。奇怪,当你需要/不需要保留一个对象。正如我所说,这在大多数时间没有错误,并没有在我所有的设备测试中发生崩溃,但在模拟器中,它现在显然正在被释放并导致我的错误... – RanLearns 2011-02-23 02:06:34

+0

报价到处“保留”,但在作业后添加了一个额外的[variablename retain] :)现在一切正常!谢谢 – cV2 2011-03-16 12:03:12