2012-09-28 5 views
51

Ich habe das AdMob SDK 6.2.0 (Xcode 4.5 (4G182) installiert und teste es auf einem iPhone 4S und dem Simulator). Ich habe das Tutorial verfolgt und möchte nur einmal AdMob mit einem Banner zeigen. Aber es stürzt in der letzten Zeile:AdMob stürzt mit [GADObjectPrivate changeState:] ab: nicht erkannter Selektor

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

Der Absturz ist

2012-09-28 09: 03: 58,268 NewProject [1467: c07] - [GADObjectPrivate change:]: Unbekannter Selektor gesendet zu Instanz 0x95c17d0 2012-09-28 09: 03: 58.276 NewProject [1467: c07] * Beenden von App wegen nicht abgefangener Ausnahme 'NSInvalidArgumentException', Grund: '- [GADObjectPrivate changeState:]: nicht erkannter Selektor an Instanz 0x95c17d0 gesendet'

Das sieht für mich wie ein Fehler in der Bibliothek aus, aber ich denke, das ist sehr unwahrscheinlich. Irgendwelche Gedanken?

EDIT: Der genau gleiche Code funktioniert in den Beispielprojekten. Kann ich mit meiner Projektdatei etwas falsch machen, das zu diesem Fehler führen würde?

Antwort

171

Sie müssen -ObjC den Andere Linker Flags Ihrer Anwendung Ziel Build Einstellung hinzuzufügen:

  1. Klicken Sie auf das blaue Top-Level-Projekt-Symbol in XCode
  2. Ihr Ziel wählen und gehen Sie zu Bauen Einstellungen
  3. Unter Andere Linker Flags hinzufügen -ObjC sowohl für Veröffentlichung und Debug

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

Auch sicher sein, ein sauberes zu tun und

+1

mein Projekt wird nicht mit -all_load-Flag kompilieren, aber es scheint jetzt ohne Absturz zu funktionieren, nachdem -ObjC hinzugefügt wurde. Könnten Sie das erklären? –

+0

Ich liebe Menschen wie dich. – GoldenJoe

+0

@bart: Als ein kleines Weihnachtsgeschenk habe ich diese Antwort aktualisiert, um die notwendigen Informationen aus dem Link enthalten und löschte es. Das nächste Mal mach es bitte alleine. – ThiefMaster

3

wieder aufbauen Wenn euch immer noch Probleme haben, stellen Sie sicher, dass es -ObjC und nicht -Objc. Meine Güte, verbrachte Wochen damit, herauszufinden, warum.

+0

Fast alles ist Groß-und Kleinschreibung in den meisten Programmiersprachen. – GeneCode

4

beste Lösung für mich ist die Verwendung -force_load Flags statt -ObjC enter image description here

+0

Mit der "-ObjC" Flagge hatte ich Probleme mit ASIHTTP. Die beste Lösung ist das Flag über "-force_load". Tks! ; P – diegodsp

+0

das wird nur diese Bibliothek vollständig laden und App-Größe zu reduzieren, Daumen hoch –

+0

Funktioniert nicht auf Xcode 8. Abheben -ObjC gibt einen Linker-Fehlercode 1. –

0

Für diejenigen unter Ihnen, die den Obj-c-Linker-Flag versucht, das Hinzufügen und bekamen immer noch den gleichen Fehler „Unbekannte Selektor an Instanz gesendet“ bei dem Versuch, um eine Anzeige zu laden, habe ich eine Lösung gefunden. Dies ist für den neuesten XCode (Version 8.1).

Zum Vergleich:

  • Ich habe Google AdMob cocoapods verwenden.
  • Ich verwendete Storyboard, um eine Ausgangsverbindung zu meinem Viewcontroller herzustellen, und GADBannerView war NICHT verfügbar als eine Klasse, also schrieb ich es wie die meisten Leute taten.
  • Auf einer der Stackoverflow-Antworten, die ich sah, wurde die benutzerdefinierte Klasse für die Banneransicht auf GADBannerView festgelegt, was automatisch passieren würde, wenn es eine Option in der Dropdown-Liste war, als Sie die Steckdose hinzufügten.Für mich war es nicht, seit ich es selbst eingeben musste.

No custom class specified screengrab

im Drop-Down-Suche sah ich, dass GADBannerView als Option verfügbar war und es ausgewählt.

GADBannerView class available

Nachdem es die Auswahl, lief die App ohne Probleme, keine Notwendigkeit, den Linker-Flag (meins war standardmäßig leer) oder etwas hinzuzufügen.

Hoffe das hilft jemand anderem!