51

AdMob SDK 6.2.0(Xcode 4.5(4G182)をインストールし、iPhone 4Sとシミュレーターでテストしています)。チュートリアルに従い、AdMobにバナーを1回表示させたいだけです。しかし、最後の行でクラッシュします。

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. その他のリンカーフラグの下に、リリースデバッグ-ObjCの両方を追加します

ソース: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を使用してGoogleAdMobを追加しました。
  • ストーリーボードを使用してビューコントローラーへのアウトレット接続を作成しましたが、GADBannerViewはクラスとして使用できなかったため、ほとんどの人が行ったように書き込みました。
  • スタックオーバーフローの回答の1つで、bannerviewのカスタムクラスがGADBannerViewに設定されていました。これは、アウトレットを追加したときにドロップダウンリストのオプションである場合に自動的に発生すると思います。私にとっては、自分で入力しなければならなかったので、そうではありませんでした。

カスタムクラス指定のスクリーングラブはありません

ドロップダウンを見ると、GADBannerViewがオプションとして利用可能であることがわかり、それを選択しました。

GADBannerViewクラスが利用可能

それを選択した後、アプリは問題なく実行され、リンカーフラグ(デフォルトでは空白でした)などを追加する必要はありません。

これが他の誰かに役立つことを願っています!

于 2016-11-22T01:44:22.137 に答える