2009-10-26 78 views
0

當我在Modal視圖中顯示另一個控制器時,我正在接收EXC_BAD_ACCESS。顯然,當我到達該控制器的viewDidLoad時,有些變量是「無效的」。但是,如果我等待20秒,那麼控制器將正常加載。等待iPhone內存管理

我是新來的iPhone。對不起,有一個新手問題。

+0

當你說你「得到」控制器的viewDidLoad你的意思是該方法是由應用程序自動調用,或者你明確地調用它?什麼對象有EXC_BAD_ACCESS?一些代碼會很有用。 – TechZen 2009-10-26 16:30:42

+0

嗨 - 我試圖在名爲Root的控制器中使用全局NSString變量。我創建/設置了另一個名爲View inside Root.m中的控制器。我將一個值分配給Root中的NSString,存在View,然後嘗試在ViewDidLoad中加載View時訪問NSString。在離開Root之前和我進入View之前,我設置了斷點來檢查NSString的值。有時它具有相同的價值,有時會說無效。更多來下一個評論... – YVR1985 2009-10-28 14:05:05

+0

我想我通過將我所有的處理移動到視圖來解決它。看起來NSString可能因爲被太多填充而走出界限。你碰到過嗎?另外,我注意到在模擬器和設備上的結果也不一致。感謝您的任何意見。 – YVR1985 2009-10-28 14:06:09

回答

0

通常可以通過運行調試器來跟蹤EXC_BAD_ACCESS。不要設置任何中斷點,只需在debug(Command-Y)中運行,並執行通常會導致應用程序崩潰的操作。調試器將停止在發生崩潰的代碼中。然後,您可以查看調試器中的線程列表(左上角視圖),並查看有效代碼的最後一行。灰色字體的行是來自內部代碼的行。全黑字體的行是你的代碼。點擊你的代碼行的最後一個(堆疊中最頂部),你可以看到它失敗的地方。然後,您可以將鼠標懸停在該行的變量上以查找尚未初始化的變量。這應該讓你知道發生了什麼。

+0

謝謝你馬特。我會試試這個,讓你知道我找到了什麼。快速的問題 - 似乎在模擬器中運行我的應用程序而不是設備會產生不一致。你有什麼見解嗎?謝謝。 – YVR1985 2009-10-28 14:07:23

+0

我已經看到兩者之間的不一致之處,但你必須詳細說明你所看到的具體不一致之處。 – 2009-10-28 14:46:06

+0

嗨馬特 - 例如,應用程序不會在模擬器中出現NSString問題,就像在真實手機上一樣。我有一個跟蹤分數的應用程序,在模擬器中,我可以輸入我要求的完整數據 - 填充5個數組,大約10個變量,然後將它們存儲在覈心數據中。在模擬器上沒有問題,但在我真正使用設備的一半之前就停止了。奇怪的。我會再次嘗試你的建議,看看錯誤在哪裏。在一天結束的時候,我寫了它,所以我應該能夠弄清楚。 :-) – YVR1985 2009-10-29 03:25:07