iPhone上的Admob集成 - 内存泄漏问题

时间:2011-04-12 19:11:09

标签: iphone memory-leaks xcode4 admob

我想知道是否有人可以提供以下帮助。我已将iAd和AdMob集成到我的应用中。但是,用户报告该应用程序在iPod Touch上崩溃。在xCode中使用Instruments我已经设法识别出名为“GOOGLE_SHUFFLE_RVS_User_waylonis_Code_afma1_googlmac_iPhone_GoogleAds_Signals_Protected_build_GoogleAdsSignals_build_Release_iphoneos_Google”的内容每次调用时都会导致大约500字节的内存泄漏。我的广告刷新率设置为20秒,因此每隔20秒发生一次。

我的代码如下。

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
if (self.bannerIsVisible)
{

    [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
    // banner is visible and we move it out of the screen, due to connection issue
    banner.frame = CGRectOffset(banner.frame, 0, -90);
    [UIView commitAnimations];
    self.bannerIsVisible = NO;

}

    [self loadAdMobAd];
}

-(void)loadAdMobAd {

if (!bannerView_) {

CGRect adSize = CGRectMake (0,40,0,0);
adSize.size = GAD_SIZE_320x50;

bannerView_ = [[GADBannerView alloc] initWithFrame:adSize];
bannerView_.rootViewController = self;

bannerView_.adUnitID = MY_BANNER_UNIT_ID;

bannerView_.rootViewController = self;
[self.view addSubview:bannerView_];

// Initiate a generic request to load it with an ad.
[bannerView_ loadRequest:[GADRequest request]]; 

}
}

我们的想法是,如果iAd不可用,则会加载AdMob广告。

我的代码是否有任何错误可能导致泄漏?

非常感谢,

马丁

2 个答案:

答案 0 :(得分:3)

显然,GOOGLE_SHUFFLE_RVS内存泄漏是一个已知问题。根据谷歌集团(http://groups.google.com/group/google-admob-ads-sdk/browse_thread/thread/2631fcb87d909bfa/edafd2a4ac175f47?lnk=gst&q=memory+leak#edafd2a4ac175f47),“这是一个已知故障,并将在下一个版本中修复“(来自3月31日发布的评论)。他们还说它已在内部修复但尚未发布。

令我感到非常惊讶的是,AdMob / Google没有优先考虑每次广告加载时泄露内存的广告横幅这样重要的内容。我想现在每个人都只是使用内存泄漏版本。 :-o

答案 1 :(得分:1)

你正在分配bannerView_,将它添加到视图中,但不释放它。

尝试在loadRequest行之后添加[bannerView_ release];