jon*_*087 7 debugging xcode nszombie ios
我在这里看到很多关于如何解决EXC_BAD_ACCESS代码= 2的线程,而且我已经发布了它,我的共识似乎是我试图访问我的数组或数组中的对象.我看到大多数时候解决方案似乎是在代码中有太多[release theObject].对我来说问题是我没有任何释放呼叫,因为我正在使用ARC.
所以我的问题是如何从这一点开始自己调试.我可以发布代码,如果这会有所帮助,但我认为作为第一步,我只想帮助我的下一步应该是什么以及如何做到这一点.
我发现很多线程似乎都说我应该打开NSZombiesEnabled来帮助找到问题的根源.
在僵尸启用之前,我的应用程序将构建并运行,绝对没有错误或警告.但是一旦你触摸模拟器中的按钮就会崩溃.
打开Zombies之后,应用程序仍然构建并运行,没有任何错误,但现在模拟器出现后它立即崩溃,现在XCode现在切换到Tread 1下的Debug Navigator,列出了超过100,000个条目,每个单击你点击在主窗口显示一些东西,我不知道是什么意思.
所以,现在我该怎么办?我已经打开了Zombies,再次运行,我在屏幕上看到了一堆东西,但是真的不知道如何制作它的正面或反面.我试图发布一个屏幕截图,但我还没有权限去做.
enj*_*yem 21
我查看了您的源代码并发现了问题.您正在尝试在懒惰加载的过程中设置numberOfMatchingCards属性,从而创建无限循环.您将尝试加载新游戏,因为您在调用setter时尚未完成游戏实例化.只是改变self.gamegameself.game.numberOfMatchingCards
- (IBAction)cardModeChanged:(UISegmentedControl *)sender {
switch ([sender selectedSegmentIndex]) {
case 0:
self.game.numberOfMatchingCards = 2;
break;
case 1:
self.game.numberOfMatchingCards = 3;
break;
default:
self.game.numberOfMatchingCards = 2;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
至
- (IBAction)cardModeChanged:(UISegmentedControl *)sender {
switch ([sender selectedSegmentIndex]) {
case 0:
_game.numberOfMatchingCards = 2;
break;
case 1:
_game.numberOfMatchingCards = 3;
break;
default:
_game.numberOfMatchingCards = 2;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定这会解决您的错误访问问题,但这是调试导航器中许多条目的原因.如果您在修复此问题后仍然存在错误的访问问题,请告诉我们.重要的是要记住,即使您使用ARC,对象仍然会被释放(当它们的引用计数降至零时).