Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone AdMob与[GADObjectPrivate changeState:]崩溃:无法识别的选择器_Iphone_Objective C_Admob - Fatal编程技术网

Iphone AdMob与[GADObjectPrivate changeState:]崩溃:无法识别的选择器

Iphone AdMob与[GADObjectPrivate changeState:]崩溃:无法识别的选择器,iphone,objective-c,admob,Iphone,Objective C,Admob,我已经安装了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 -

我已经安装了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新项目[1467:c07]-[GADObjectPrivate changeState:]:发送到实例0x95c17d0的选择器无法识别 2012-09-28 09:03:58.276新项目[1467:c07]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[GADObjectPrivate changeState:::]:无法识别的选择器发送到实例0x95c17d0'

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


编辑:在示例项目中使用完全相同的代码。我的项目文件是否存在可能导致该错误的错误?

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

  • 单击XCode中的蓝色顶级项目图标
  • 选择目标并转到“生成设置”
  • 在其他链接器标志下添加发布和调试的
    -ObjC
  • 资料来源:


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

    对我来说,最好的解决方案是使用-force\u load flag,而不是-ObjC

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

    供参考:

    • 我使用cocoapods添加了googleadmob
    • 我使用故事板与我的viewcontroller建立了一个插座连接,而GadbanerView并没有作为一个类提供,所以我像大多数人一样写了它
    • 在其中一个stackoverflow答案中,我看到bannerview的自定义类被设置为GADBannerView,我假设在添加outlet时,如果它是下拉列表中的一个选项,就会自动发生这种情况。对我来说,这不是因为我必须自己打字

    查看下拉列表,我看到GadbanerView作为一个选项可用,并选择了它。

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


    希望这对其他人有帮助

    我的项目不会使用-all_load标志编译,但在添加了-ObjC之后,它现在似乎可以正常工作而不会崩溃。你能解释一下吗?@bart:作为一份小圣诞礼物,我更新了这个答案,包含了链接中的必要信息,并取消了删除。下一次请你自己做。为什么有必要这么做?cocos2d项目似乎是从这面旗帜开始的。天哪,多年来项目一直没有这面旗帜。然后突然开始崩溃。为什么?为什么我需要这面旗帜???有什么解释吗?使用“-ObjC”标志,我在ASIHTT上遇到了问题。最好的解决方案是使用“强制加载”上方的标志。Tks;p这将仅完全加载此库并减少应用程序大小,但在Xcode 8上竖起大拇指不起作用。起飞-ObjC给出链接器错误代码1。在大多数编程语言中,几乎所有内容都区分大小写。