2014-09-14 4 views
8

मैंने एक्सकोड में यूनिवर्सल ऐप (एकल दृश्य) बनाया है। मैं AppDelegate फ़ाइल के लिए इस कोड जोड़ा क्योंकि मैं हर दृश्य पर iAd बैनर करना चाहते हैं:CGAffineTransformInvert: एकवचन मैट्रिक्स त्रुटि

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 
} 

वास्तविक iPhone (iOS 8) पर सब कुछ ठीक काम करता है (बैनर हर दृश्य पर दिखाई देता है), लेकिन मैं इस त्रुटि हो रही है:

<Error>: CGAffineTransformInvert: singular matrix. 

यदि मैं सिम्युलेटर (आईओएस 8) पर इस ऐप को चलाने का प्रयास करता हूं तो व्यवहार समान होता है। सब कुछ ठीक काम करता है, मैं एक ही त्रुटि मिलती है लेकिन इसके अलावा मैं मिल: * 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}* 

लेकिन मैं प्रतिनिधि है और मैं didFailToReceiveAdWithError कार्यान्वित किया। असली आईफोन पर यह काम करता है ...

मेरा सवाल यह है कि मैं इन दो विशेष त्रुटियों को कैसे हल कर सकता हूं?

उत्तर

9

सबसे संभावित कारण यह है कि यहां पर एक संदर्भ शून्य है। आप एक शून्य मैट्रिक्स को उलटा नहीं कर सकते (जो एक तकनीकी विवरण है, और आपको वास्तव में परवाह नहीं करना चाहिए; मैं बस यह कहने की कोशिश कर रहा हूं कि आपको वह त्रुटि क्यों मिली है)।

application(didFinishLaunchingWithOptions:) को बहुत जल्दी कहा जाता है, और फ्रेम शायद अभी तक सेट नहीं हैं। आप अपने रूट व्यू कंट्रोलर के viewDidLoad (यदि आवश्यक हो तो viewWillAppear में फ़्रेम को फिक्स अप करना) में संभवतः इस काम को करना चाहते हैं (यदि आपके पास पहले से कोई नहीं है तो आपको इसके लिए सबक्लास बनाना होगा)।

+0

अपने जवाब के लिए धन्यवाद, लेकिन मैं इन दो त्रुटियों हो रही है और कोई फर्क नहीं पड़ता है जहाँ मेरे कोड है रखा (मैंने ViewDidLoad, ViewWillAppear और ViewDidAppear को आजमाया)। और मैंने सभी समन्वय मुद्रित करने की कोशिश की और शून्य मान वाला कोई भी नहीं है। तो मैं आप पर भरोसा रखूंगा कि मुझे इसकी परवाह नहीं है :) –

0

अपने ViewController वर्ग को यह जोड़े .. जो कुछ भी अपने बैनर संपत्ति नाम के साथ adBanner की जगह

-(void)viewDidDisappear:(BOOL)animated{ 
    [adBanner removeFromSuperview]; 
    adBanner.delegate = nil; 
    adBanner = nil; 
} 
संबंधित मुद्दे