51

我已经安装了 AdMob SDK 6.2.0(Xcode 4.5 (4G182),我正在 iPhone 4S 和模拟器上进行测试)。我按照教程操作,只想让 AdMob 显示一次横幅。但它在最后一行崩溃:

self.bannerView = [[GADBannerView alloc]
               initWithFrame:CGRectMake(0.0,
                                        self.view.frame.size.height -
                                        GAD_SIZE_320x50.height,
                                        GAD_SIZE_320x50.width,
                                        GAD_SIZE_320x50.height)];

self.bannerView.delegate = self;
self.bannerView.adUnitID = @"xREMOVEDBYMEx";
self.bannerView.rootViewController = self;
[self.view addSubview:self.bannerView];
GADRequest * request = [GADRequest request];
request.testing = YES;
[self.bannerView loadRequest:request];

崩溃是

2012-09-28 09:03:58.268 NewProject[1467:c07]-[GADObjectPrivate changeState:]: 无法识别的选择器发送到实例 0x95c17d0 2012-09-28 09:03:58.276 NewProject[1467:c07] *由于应用程序终止未捕获的异常“NSInvalidArgumentException”,原因:“-[GADObjectPrivate changeState:]:无法识别的选择器发送到实例 0x95c17d0”

对我来说,这看起来像是图书馆中的一个错误,但我认为这不太可能。有什么想法吗?

编辑:完全相同的代码在示例项目中工作。我的项目文件有什么问题会导致该错误吗?

4

4 回答 4

171

您需要添加-ObjC到应用程序目标的构建设置的其他链接器标志:

  1. 单击 XCode 中的蓝色顶级项目图标
  2. 选择您的目标并转到构建设置
  3. Other Linker Flags-ObjC下为ReleaseDebug添加

来源:https ://developers.google.com/mobile-ads-sdk/docs/admob/mediation#ios-linker

还要确保进行清洁和重建

于 2012-09-28T11:19:35.277 回答
4

对我来说最好的解决方案是使用 -force_load 标志而不是 -ObjC 在此处输入图像描述

于 2013-08-30T18:01:25.553 回答
3

如果你们仍然有问题,请确保它是 -ObjC 而不是 -Objc。天哪,花了数周时间试图找出原因。

于 2013-08-14T22:03:18.547 回答
0

对于那些尝试添加 Obj-c 链接器标志并且在尝试加载广告时仍然遇到相同的“无法识别的选择器发送到实例”错误的人,我找到了修复方法。这是最新的 XCode(8.1 版)。

以供参考:

  • 我使用 cocoapods 添加了 Google AdMob。
  • 我使用情节提要与我的视图控制器建立出口连接,而 GADBannerView不能作为一个类使用,所以我像大多数人一样编写它。
  • 在我看到横幅视图的自定义类被设置为 GADBannerView 的一个 stackoverflow 答案中,如果添加插座时它是下拉列表中的一个选项,我认为它会自动发生。对我来说,这不是因为我必须自己输入。

没有自定义类指定screengrab

查看下拉列表,我看到 GADBannerView 作为一个选项提供并选择了它。

GADBannerView 类可用

选择它后,应用程序运行顺利,无需添加链接器标志(我的默认情况下为空白)或任何东西。

希望这对其他人有帮助!

于 2016-11-22T01:44:22.137 回答