AdMob crashes with [GADObjectPrivate changeState:]: unrecognized selector

david picture david · Sep 28, 2012 · Viewed 17k times · Source

I have installed the AdMob SDK 6.2.0 (Xcode 4.5 (4G182) and I am testing on an iPhone 4S and the simulator). I followed the tutorial and just want to get AdMob showing a banner once. But it crashes on the last line:

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];

The crash is

2012-09-28 09:03:58.268 NewProject[1467:c07] -[GADObjectPrivate changeState:]: unrecognized selector sent to instance 0x95c17d0 2012-09-28 09:03:58.276 NewProject[1467:c07] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[GADObjectPrivate changeState:]: unrecognized selector sent to instance 0x95c17d0'

This looks like a bug in the library to me but I think thats very unlikely. Any thoughts?

EDIT: The exact same code works in the example projects. Is there something I can do wrong with my project file that would result in that error?

Answer

bart picture bart · Sep 28, 2012

You need to add -ObjC to the Other Linker Flags of your application target's build setting:

  1. Click the blue top-level project icon in XCode
  2. Choose your target and go to Build Settings
  3. Under Other Linker Flags add -ObjC for both Release and Debug

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

Also be sure to do a clean and rebuild