【问题标题】:+requestAdWithDelegate: crashing because I'm in GSEventReceiveRunLoopMode?+requestAdWithDelegate:因为我处于 GSEventReceiveRunLoopMode 而崩溃?
【发布时间】:2010-12-02 04:29:58
【问题描述】:

这会崩溃(但没有向调试器输出任何信息;没有转储,没有跟踪):

adMobAd = [AdMobView requestAdWithDelegate:self]; // start a new ad request
[adMobAd retain]; // this will be released when it loads (or fails to load)

我认为这是因为我的代码没有在 NSDefaultRunLoopMode 中执行,AdMob 说 +requestAdWithDelegate: 需要它。不幸的是,即使我稍后运行选择器,当我的应用程序处于 NSDefaultRunLoopMode 时,它​​也会失败。所以我仍然不确定为什么会崩溃。

我在Debugger控制台输出[[NSRunLoop currentRunLoop] currentMode],发现是“GSEventReceiveRunLoopMode”。

什么是 GSEventReceiveRunLoopMode?​​p>

无论我是从 nib(.xib 文件)加载 AdViewController 还是在代码中创建(alloc/init)它,都会发生这种情况。

【问题讨论】:

  • 什么类型的崩溃?西格赛格? BAD_EXEC_ADDR?例外?
  • 以上都不是——Xcode 根本不显示任何有关崩溃的信息。不过,我发现了问题:我正在使用 3.0+ SDK 构建,我应该使用 extras 目录中的库。

标签: iphone objective-c iphone-sdk-3.0 ios-simulator


【解决方案1】:

我修好了。我是用 3.0 SDK 构建的,我也尝试了 3.1 SDK,在两者下都发生了崩溃。解决方案是使用 extras/ 目录中的 3.0 兼容库。这些文件称为 libAdMobDevice3_0.a 和 libAdMobSimulator3_0.a。

如果有人能告诉我为什么旧的 AdMob 库在 3.0+ SDK 下崩溃,并且没有关于 Xcode 提供的崩溃信息,那么奖励积分。或者,如果您知道为什么 AdMob 实际上需要为 2.0 和 3.0 提供两个不同的库。

【讨论】:

  • @Eliot,您找到问题的答案了吗?我现在有一个类似的问题。如果我为 2.2.1 操作系统版本构建项目,它会在 3.x 设备上运行吗?谢谢。
  • 是的,是的。 2.2.1 版本(据我所知)适用于 3.x 设备,但不适用于 3.x 模拟器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 2013-03-09
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多