【问题标题】:iPhone app crashes with admob?iPhone应用程序与admob崩溃?
【发布时间】:2011-09-09 09:50:02
【问题描述】:

我在两个屏幕的 viewdidLoad 上有一个带有 admob 的 iphone 应用

我的代码是:

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

谁能告诉我可能是什么问题

【问题讨论】:

标签: iphone objective-c ios admob


【解决方案1】:

您的代码中某处存在保留/释放问题。您说它在一个视图中有效,但在另一个视图中无效 - 这让我相信您将此实例存储在视图控制器之外。 message sent to deallocated instance 问题是由于您在弹出此错误之前尝试使用已从代码中某处的内存中删除的变量。您需要确保创建此对象的视图控制器正确地retaining 它,以便在您需要再次使用它之前它不会被释放:

GADBannerView *_adMobBannerView;

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

听起来您可能需要更新您的 memory management documentation,但要点是,无论您在哪里调用 alloc,您都在管理该内存,并且需要在完成后调用 release它。如果您需要一个变量比 autoreleased 对象存在的时间更长,那么您需要使用 ivar 属性 @property (nonatomic, retain) 创建一个实例变量和 retain 对象。

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 2011-06-20
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    相关资源
    最近更新 更多