AdMob与:无法识别的select器崩溃

我已经安装了AdMob SDK 6.2.0(Xcode 4.5(4G182),我正在iPhone 4S和模拟器上testing)。 我遵循教程,只想让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:]:无法识别的select器发送到实例0x95c17d0 2012-09-28 09:03:58.276 NewProject [1467:c07]未捕获exception'NSInvalidArgumentException',原因:' – [GADObjectPrivate changeState:]:无法识别的select器发送到实例0x95c17d0'

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

编辑:完全相同的代码在示例项目中工作。 有什么我可以做错我的项目文件,将导致该错误?

您需要将-ObjC到您的应用程序目标的构build设置的其他链接器标志

  1. 点击XCode中的蓝色顶级项目图标
  2. select你的目标,并转到生成设置
  3. 其他链接器标志下为ReleaseDebug添加-ObjC

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

另外一定要做一个清洁和重build

对我来说最好的解决scheme是使用-force_load标志,而不是-ObjC 在这里输入图像说明

如果你们仍然有麻烦,确保它是-ObjC而不是-Objc。 Geez,花了几个星期试图弄清楚为什么。

对于那些尝试添加Obj-c链接器标志并且仍然在尝试加载广告时遇到同样的“无法识别的select器发送到实例”错误的用户,我发现了一个修复程序。 这是最新的XCode(版本8.1)。

以供参考:

  • 我使用cocoapods添加了Google AdMob。
  • 我使用storyboard来连接到我的viewcontroller和GADBannerView 不可用作为一个类,所以我写了像大多数人一样。
  • 在其中一个我看到bannerview的自定义类的stackoverflow答案被设置为GADBannerView,我认为如果它是下拉列表中的一个选项,当您添加sockets时会自动发生。 对我来说,这不是因为我必须自己input。

没有自定义类指定screengrab

看看下拉,我看到GADBannerView作为一个选项是可用的,并select它。

GADBannerView类可用

select它后,应用程序顺利运行,不需要添加链接器标志(默认为空)或任何东西。

希望这可以帮助别人!