2012-09-28 52 views
51

我已经安装了AdMob SDK 6.2.0(Xcode 4.5(4G182),我正在测试iPhone 4S和模拟器)。我遵循教程,只想让AdMob展示一次横幅广告。但它崩溃的最后一行:AdMob崩溃与[GADObjectPrivate changeState:]:无法识别的选择器

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改变状态:]:无法识别的选择发送to example 0x95c17d0 2012-09-28 09:03:58.276 NewProject [1467:c07] *由于未捕获异常'NSInvalidArgumentException',原因:' - [GADObjectPrivate changeState:]:无法识别的选择器发送到实例0x95c17d0'

这看起来像库中的一个bug,但我认为这不太可能。有什么想法吗?

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

回答

171

您需要添加-ObjC应用程式目标版本设定的其它链接器标记

  1. 点击Xcode中蓝色的顶级项目图标
  2. 选择你的目标,去构建设置
  3. 其它链接器标记添加-ObjC两个发布调试

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

而且一定要做好清洁和重建

+1

我的项目不会使用-all_load标志进行编译,但是在添加-ObjC之后,它现在似乎无崩溃地工作。你能解释一下吗? –

+0

我爱你这样的人。 – GoldenJoe

+0

@bart:作为一个小型圣诞礼物,我更新了这个答案,以包含链接中的必要信息并将其取消删除。下次请自己做。 – ThiefMaster

3

如果你们仍然有问题,确保它的-ObjC而不是-ObjC。 Geez花了几个星期试图找出原因。

+0

在大多数编程语言中,几乎所有内容都区分大小写。 – GeneCode

4

最好的解决办法是使用-force_load标志尝试时,而不是-ObjC enter image description here

+0

使用“-ObjC”标志我遇到了ASIHTTP问题。 最好的解决方案是使用上面的“-force_load”标志。 TKS! ; P – diegodsp

+0

这将完全加载这个库并减少应用程序大小,竖起大拇指 –

+0

在Xcode 8上不起作用。起飞-ObjC给出链接器错误代码1。 –

0

对于那些你们谁试图添加对象 - 链接标志,仍然得到了同样的“无法识别的选择发送到实例”错误加载我找到修复程序的广告。这是最新的XCode(版本8.1)。

参考:

  • 我使用的CocoaPods加入谷歌的AdMob。
  • 我用故事板做出了一个出口连接到我的viewcontroller和GADBannerView是不是作为一个类提供,所以我写了像大多数人一样。
  • 在我看到bannerview的自定义类的stackoverflow答案之一被设置为GADBannerView,我假设它会自动发生,如果它是下拉列表中的一个选项,当您添加插座。对我来说,这不是因为我必须自己输入。

No custom class specified screengrab

望着我看到的GADBannerView是可以作为一个选项,选中下拉。

GADBannerView class available

选择它后,应用程序运行顺利,没有必要添加链接标志(我的是默认为空),或任何东西。

希望这可以帮助别人!

相关问题