设备中的EXC_BAD_ACCESS,而不是模拟器中

时间:2012-02-10 09:20:16

标签: ios iphone adwhirl

我已在我的项目中实施了adwhirl。我之前已经在我的项目中实现了它,所以我只是将它合并到我之前的项目中。

- (UIViewController *)viewControllerForPresentingModalView {
{
  return self;
}

我在之前的项目中使用了这个..因为我的window.rootvviewcontroller只是自己的。但是在我目前的项目中,有很多屏幕我正在展示广告,所以我使用了:

- (UIViewController *)viewControllerForPresentingModalView {
    {
      return return [[(AppDelegate *)[[UIApplication sharedApplication] delegate] window] rootViewController] ;;
    }

主要问题是程序崩溃了,现在仍然如此。起初一切都还好:iads测试广告已加载,但很少崩溃。我很快就明白这是因为 Admob 。它很少崩溃,因为大多数时候没有加载admob广告。

现在正在搜索这些崩溃,我遇到了一个问题,因为我在Xcode 4.2而不是之前的项目Xcode 4.0中完成了项目,因此我的窗口和视图控制器中存在强大的属性。我删除了它。

现在问题出在模拟器中它不会崩溃,但它会在设备中崩溃。

错误发生在将adview添加为子视图之后,- (UIViewController *)viewControllerForPresentingModalView已经通过此功能 adWhirlDidReceiveAd方法之前。< / p>

实际崩溃是 [GADRequestPrivate spamSignals] EXC_BAD_ACCESS。

3 个答案:

答案 0 :(得分:1)

以下答案已经为我赢得了奖励:) .....你可以尝试解决你的问题......

链接:Getting to the bottom of crash

我找到了调试Crash代码的最佳方法之一。按照调试技术的链接:

http://www.cocoadev.com/index.pl?DebuggingAutorelease

您需要非常仔细地分析您的控制台,以查看崩溃发生的实际原因。这对几乎所有未启用ARC的代码都有帮助。

答案 1 :(得分:0)

我建议您分析项目并查找内存泄漏和僵尸。您似乎正在向已发布的对象发送消息,从而导致无效的内存访问。僵尸检测无法在设备上运行,但您可以在模拟器上运行它。看看Xcode Instruments - Enable NSZombie Detection? Where is it?

希望它有所帮助。

答案 2 :(得分:0)

即使在专有的Adwhirl代码中发生这种情况,您也可以通过打开指定的所有调试标志来学习很多东西,例如,在How to break on __NSAutoreleaseNoPool中。这个答案讨论了很多调试标志,而不仅仅是自动释放池标志。