ADMOB内存泄漏?

时间:2014-07-27 17:21:02

标签: ios xcode memory-leaks swift admob

每当新广告出现时,我都会使用Swift语言进行ADMOB,我的内存正在增加。我认为有泄漏。没有ADMOB,其他一切都很好。

var inter: GADInterstitial
  override func viewWillAppear(animated: Bool) {
    inter = GADInterstitial()
    inter.delegate = self
    inter.adUnitID = "****"
    var request:GADRequest = GADRequest()
    request.testDevices = [ "***" ]
    inter.loadRequest(request)
}

我正在使用UIActionAlert来显示非页内广告

self.inter.presentFromRootViewController(self)

记忆报告链接:

https://www.dropbox.com/s/zjkt2f38rcy1ryr/Screenshot%202014-07-27%2020.17.18.png

我做错了吗?我正在使用ARC。我可以强制自己发布此Interstitials

修改

我也试过了GADBanner。我只是打开应用程序;我没有做任何事情而且记忆在增加

override func viewWillAppear(animated: Bool) {
 banner = GADBannerView()
 banner.delegate = self
 banner.adSize = kGADAdSizeSmartBannerPortrait
 banner.adUnitID = "****"
 var request:GADRequest = GADRequest()
 banner.rootViewController = self
 request.testDevices = [ "****" ]   
 self.view.addSubview(banner)
}

https://www.dropbox.com/s/3gn3pq3s1w2gfdd/Screenshot%202014-07-27%2022.05.51.png

4 个答案:

答案 0 :(得分:2)

您需要致电destroy()以避免横幅广告和插页式广告上的内存泄漏。插页式广告是一次性使用的对象,因此您必须将其销毁。横幅广告可以重复使用,但一旦使用它们,请致电destroy()

See this for reference

答案 1 :(得分:1)

我认为您需要通过将委托设置为nil来释放横幅。 来自AdMob文档(请参阅https://developers.google.com/mobile-ads-sdk/docs/admob/ios/banner?hl=es):

  

请注意,如果您将委托实现为不同的对象   比GADBannerView子类你应该确保设置   在发布视图之前,GADBannerView的'委托属性为nil。

- (void)dealloc {   
  bannerView_.delegate = nil;
   // Don't release the bannerView_ if you are using ARC in your project  
   [bannerView_ release];   
   [super dealloc]; 
  }

在您的情况下,我认为您只需要实施bannerView_.delegate = nil来电。

我希望这会有所帮助。

答案 2 :(得分:0)

我发现最好的做法是只分配一次GADBannerView,否则它会堆积在你的记忆中。

我的解决方案是将我的GADBannerView存储在单例类中,并在应用程序的rootViewController加载(didLoad)时分配它。然后你可以在任何地方使用它而无需再次请求。

答案 3 :(得分:0)

虽然使用了GADInterstitial AdMob广告,但我遇到了同样的问题。巨大的CPU从内存泄漏中流失。问题是您必须转到实际的根视图控制器。我在Objective C中,但基本上,如果你在UITabBarController视图层次结构中,那么试试这个:

banner.rootViewController = (UITabBarController *)self.view.window.rootViewController

有一件事解决了我的所有问题。希望它有效!