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];
当我坏访问调用堆栈东西线看起来如下:
两个对象( pExtendedScrollableSubContextBounds和pEQRoot)似乎是有效的。将其他子视图添加到pExtendedScrollableSubContextBounds可以正常工作,并且可以在pEQRoot(子视图,框架)上调用其他操作。
我看在objsend R0为对象,R1是选择让我看了看存储器地址R1,看到...
这感觉就像我在某处大约捣毁内存isKindOfClass:但我不太确定。任何人都可以指向我在iOS obj_msgsend上的更多信息?有没有一种方法可以设置一个观察点来捕捉内存垃圾何时发生?
答
使用NSZombies来解决问题。
在略有不相关的说明中,有一条经验法则 - NARC代表新的,分配,保留,复制。如果一个方法调用包含任何这些关键字,那么我们拥有该对象的所有权,然后我们应该释放该对象。
这几乎总是一个僵尸对象的问题。启用NSZombies并重试。 –
当你'卸载很多东西'时,你是否发布了mSongContext?或者在第一次和第二次通话之间? –
我的名字很差的mSongContext是全球性的 – TurqMage