2011-11-17 60 views
0

我第二次嘗試將某個視圖添加爲子視圖時發生崩潰。墜機發生在這裏:obj_msgSend中的EXC_BAD_ACCESS isKindOfClass:

-(void)AddAsScrollableSubContext:(UIView*)view { 
    [pExtendedScrollableSubContextBounds addSubview: view]; //CRASH HERE 
    pSubScroll.userInteractionEnabled = true; 
} 

第二次我打電話......

[mSongContext AddAsScrollableSubContext:pEQRoot]; 

的流動是沿着

[mSongContext AddAsScrollableSubContext:pEQRoot]; 
...Load a lot of stuff 
...Press a Button 
...Unload a lot of stuff 
[pEQRoot removeFromSuperview]; 
...Press a Button 
[mSongContext AddAsScrollableSubContext:pEQRoot]; 

當我壞訪問調用堆棧東西線看起來如下: Callstack

兩個對象( pExtendedScrollableSubContextBounds和pEQRoot)似乎是有效的。將其他子視圖添加到pExtendedScrollableSubContextBounds可以正常工作,並且可以在pEQRoot(子視圖,框架)上調用其他操作。

我看在objsend R0爲對象,R1是選擇讓我看了看存儲器地址R1,看到...

memdump

這感覺就像我在某處大約搗毀內存isKindOfClass:但我不太確定。任何人都可以指向我在iOS obj_msgsend上的更多信息?有沒有一種方法可以設置一個觀察點來捕捉內存垃圾何時發生?

+2

這幾乎總是一個殭屍對象的問題。啓用NSZombies並重試。 –

+0

當你'卸載很多東西'時,你是否發佈了mSongContext?或者在第一次和第二次通話之間? –

+0

我的名字很差的mSongContext是全球性的 – TurqMage

回答

0

使用NSZombies來解決問題。

在略有不相關的說明中,有一條經驗法則 - NARC代表新的,分配,保留,複製。如果一個方法調用包含任何這些關鍵字,那麼我們擁有該對象的所有權,然後我們應該釋放該對象。