2014-09-14 7 views
8

Ich erstellte Universal-App (Einzelansicht) in Xcode. Weil ich iAd Banner haben auf jeder Ansicht möchte ich diesen Code zu AppDelegate Datei hinzugefügt:CGAffineTransformInvert: singuläre Matrix Fehler

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
{ 
    if var root = self.window?.rootViewController 
    { 
     let contentFrame = UIScreen.mainScreen().bounds 
     var _banner = ADBannerView(adType: ADAdType.Banner) 

     _banner.frame=CGRectMake(0, contentFrame.height - _banner.frame.height, _banner.frame.width, _banner.frame.height) 
     _banner.delegate = self 
     root.view.addSubview(_banner) 
    } 

    return true 
} 

auf realen iPhone (iOS 8) funktioniert alles einwandfrei (Banner auf jeder Ansicht angezeigt wird), aber ich bin immer diese Fehlermeldung:

Wenn ich versuche, diese App auf Simulator (iOS 8) auszuführen, ist das Verhalten das gleiche. Alles funktioniert gut, ich den gleichen Fehler erhalten, aber darüber hinaus erhalte ich: * ADBannerView:

Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): 
Error Domain=ADErrorDomain Code=7 "The operation couldn’t be completed. Ad was unloaded from 
this banner" UserInfo=0x7b83bf30 {ADInternalErrorCode=7, ADInternalErrorDomain=ADErrorDomain, 
NSLocalizedFailureReason=Ad was unloaded from this banner}* 

Aber ich habe Delegierten und ich umgesetzt didFailToReceiveAdWithError. Auf dem echten iPhone funktioniert es ...

Meine Frage ist, wie könnte ich diese beiden besonderen Fehler lösen?

Antwort

9

Die wahrscheinlichste Ursache ist, dass einer der hier aufgeführten Einträge Null ist. Sie können eine Nullmatrix nicht invertieren (was ein technisches Detail ist, und Sie sollten sich wirklich nicht darum kümmern müssen; ich versuche nur zu sagen, warum das der Fehler ist, den Sie bekommen).

application(didFinishLaunchingWithOptions:) wird sehr früh aufgerufen, und die Frames sind wahrscheinlich noch nicht festgelegt. Wahrscheinlich möchten Sie diese Arbeit in der viewDidLoad (möglicherweise die Frames in viewWillAppear erforderlichenfalls reparieren) Ihres root-View-Controllers (Sie müssen wahrscheinlich eine Unterklasse dafür erstellen, wenn Sie nicht bereits eine haben).

+0

Dank für Ihre Antwort danken, aber ich bin immer diese beiden Fehler und keine Rolle spielt, wo mein Code platziert (Ich habe ViewDidLoad, ViewWillAppear und ViewDidAppear ausprobiert). Und ich habe versucht alle koordinaten auszudrucken und es gibt niemanden mit Null Wert. Also werde ich dir vertrauen, dass ich mich nicht darum kümmern muss :) –

0

Fügen Sie diese auf Ihre Viewcontroller Klasse .. ersetzen adbanner mit dem, was Sie Ihren Namen Banner Eigenschaft ist

-(void)viewDidDisappear:(BOOL)animated{ 
    [adBanner removeFromSuperview]; 
    adBanner.delegate = nil; 
    adBanner = nil; 
}