2010-06-03 75 views
0

我一直在使用這個代碼創建一個UIWindow我跟蹤EXC_BAD_ACCESS在iPad上

UIMyWindow* win = [[UIMyWindow alloc] 
        initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 

UIMyWindow沒有什麼特別的,它只是有一個指針指向一個C++的類,它的ObjectiveC的一些包裝。

最近我的應用程序在添加一些代碼行後就開始崩潰了,這些代碼行並沒有對錯誤做任何事情。我添加的代碼行只是分配一個C++對象,但程序執行永遠不會到達這一行。

有趣的是我的代碼在Release中有效。

我唯一的猜測是我在一個完全不同的地方做了一些內存損壞。我的問題是: 什麼類型的內存損壞可以是? 是否有一些良好的做法來追蹤他們?

回答

1

您肯定有一條消息發送到釋放對象。

你應該試着用Instruments.app來調試你的程序。它應該告訴你潛在的記憶問題。

也看看NSZombieEnabled環境變量。基本上,它會在釋放對象的位置留下一個虛擬對象。當消息發送到該虛擬對象時,您會收到警報,讓您可以查看問題的位置。

+0

我剛剛注意到我在日誌中有這條消息: 警告:當前語言與此幀不匹配。 NSZombieEnabled沒有幫助。我的Instruments.app在我上次更新DevEnv時停止工作,或者因爲我一直在iPad上進行測試,所以可能無法工作。我會嘗試讓我的應用程序在iPhone上運行,如果它不工作我可能會嘗試更新DevEnv。 – Aleks 2010-06-03 08:53:06