2011-09-09 214 views
0

我有AdMob將在兩個屏幕的viewDidLoad一個iPhone應用程序iPhone應用程序與admob崩潰?

我的代碼是:

AbMob =[[GADBannerView alloc]initWithFrame:CGRectMake(0.0,self.view.frame.size.height-195, 320, 50)]; 

    AbMob.adUnitID = AdMob_ID; 
    AbMob.rootViewController = self; 
    [self.view addSubview:AbMob]; 



    GADRequest *r = [[GADRequest alloc] init]; 
    r.testing = NO; 

    [AbMob loadRequest:r]; 

問題是這樣的代碼工作正常,一個屏幕上,但錯誤其它屏幕上的崩潰上

* - [GADOpener didOpen]:發送到已釋放實例的消息 0x6074750

有人可以告訴我可能是什麼問題

+1

檢查你已經寫了某個地方autorelease正在使用的對象。 –

+0

我想你使用這個鏈接並關注........> http://code.google.com/mobile/ads/docs/ios/fundamentals.html – Deepesh

回答

2

您的代碼中某處存在保留/釋放問題。你說它在一個視圖中工作,但不是另一個視圖 - 這使我相信你將這個實例存儲在視圖控制器之外。 message sent to deallocated instance問題是由於您試圖在彈出此錯誤之前使用在代碼中某處已從內存中刪除的變量。您需要確保所創建這個對象的視圖控制器是正確retain荷蘭國際集團,以便它不會被釋放,你需要有再次使用它之前:

GADBannerView *_adMobBannerView; 

@property(nonatomic,retain) GADBannerView *adMobBannerView; //view controller retains object when using self.adMobBannerView = bla 

這聽起來像你可能需要刷您的memory management documentation,但其要點在於,您撥打alloc的任何地方,您都在管理該內存,並在完成該操作後需要致電release。如果你需要一個變量來保持比對象更長的時間autorelease,那麼你需要創建一個實例變量,然後使用ivar屬性@property (nonatomic, retain)自己創建對象retain