第二次尝试将某个视图添加为子视图时,我遇到了崩溃。崩溃发生在这里:
-(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的内存地址并看到了......
这感觉就像我在某个地方的垃圾记忆isKindOfClass:但我不太确定。有人能指点我关于iOS obj_msgsend的更多信息吗?有没有办法设置一个观察点来捕捉这个记忆垃圾发生时?
答案 0 :(得分:0)
使用NSZombies解决问题。
稍微不相关的说明,有一个经验法则 - NARC代表新的,分配,保留,复制。如果方法调用包含任何这些关键字,那么我们拥有该对象的所有权,然后我们应该释放该对象。