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发布此Interstitials

EDİT

我也试过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

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

看到这个参考 。

我认为你需要通过设置委托释放旗帜为零。 从AdMob文档(请参阅https://developers.google.com/mobile-ads-sdk/docs/admob/ios/banner?hl=es ):

请注意,如果您将委托实现为独立对象而不是GADBannerView子类,则应确保在释放视图之前将GADBannerView的“委托属性”设置为零。

 - (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调用。

我希望这有帮助。

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

我的解决scheme是将我的GADBannerView存储在单例类中,并在应用程序的rootViewController加载(didLoad)时进行分配。 那么你可以在任何地方使用它,而不再要求。

我有同样的问题,虽然有GADInterstitial AdMob广告。 巨大的CPU从内存泄漏中stream失。 问题是你必须去你的实际的根视图控制器。 我在Objective C中,但基本上,如果你在一个UITabBarController视图层次,那么试试这个:

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

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