我想知道是否有人可以提供以下帮助。我已将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广告。
我的代码是否有任何错误可能导致泄漏?
非常感谢,
马丁
答案 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];
。