2011-02-23 96 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