obj_msgSend中的EXC_BAD_ACCESS isKindOfClass:

问题描述:

我第二次尝试将某个视图添加为子视图时发生崩溃。坠机发生在这里: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

使用NSZombies来解决问题。

在略有不相关的说明中,有一条经验法则 - NARC代表新的,分配,保留,复制。如果一个方法调用包含任何这些关键字,那么我们拥有该对象的所有权,然后我们应该释放该对象。