Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ADMOB内存泄漏?_Ios_Xcode_Memory Leaks_Swift_Admob - Fatal编程技术网

Ios ADMOB内存泄漏?

Ios ADMOB内存泄漏?,ios,xcode,memory-leaks,swift,admob,Ios,Xcode,Memory Leaks,Swift,Admob,我正在为ADMOB使用Swift语言,每当出现新的广告时,我的记忆都在增长。我想是漏水了。没有ADMOB,其他一切都很好 var inter: GADInterstitial override func viewWillAppear(animated: Bool) { inter = GADInterstitial() inter.delegate = self inter.adUnitID = "****" var request:GADRequest =

我正在为ADMOB使用Swift语言,每当出现新的广告时,我的记忆都在增长。我想是漏水了。没有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)
内存报告链接:

我做错什么了吗?我用的是ARC。我可以自己强制释放此
间隙文件吗

EDİT

我也试过了。我刚刚打开应用程序;我什么都没做,记忆也在增长

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)
}

我认为您需要通过将delegate设置为nil来释放横幅。 来自AdMob文档(请参阅):

请注意,如果将委托实现为不同的对象,而不是 而不是GadbanerView子类,您应该确保设置 在释放视图之前,将GadbanerView的“委托”属性设置为nil

在您的情况下,我认为您只需要实现
bannerView\uu.delegate=nil
调用


我希望这会有所帮助。

我发现最好的做法是只分配一次GadbanerView,否则它会堆积在您的内存中


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

我也遇到了同样的问题,尽管使用的是间隙式AdMob广告。内存泄漏会造成巨大的CPU流失。问题是,您必须转到实际的根视图控制器。我使用的是Objective C,但基本上,如果您使用的是UITabBarController视图层次结构,请尝试以下操作:

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

这件事解决了我所有的问题。希望它能起作用

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


.

我的应用程序也有同样的问题。只要启动应用程序,如果横幅加载新广告,内存就会被填满。如果加载新广告,我的州际广告也会出现同样的问题。似乎GADBannerView&Gadbannertitalview从未被ARC清理过。如果我使用popToViewController,它甚至会保留在相同的内存中。有人有小把戏吗?使用检漏仪分析应用程序。找出泄漏的对象并报告。Kerim,你找到解决方案了吗?@Minestroni Soup,我没有找到,但我认为最好的方法是通过更改源代码来编写实现。他们的代码在2年前就出现了问题。泄漏仍然存在于2017年。我也这样做,每次使用新的banner get loadedIt可能会有所帮助,但我实际上从未发布该视图,这是主视图,一则广告正在吞噬所有内存,因此10分钟后应用程序会因为内存问题崩溃。如果禁用ads,--无泄漏。所以我知道这是广告。这种方法不再存在当你想销毁横幅时,你也可以这样做。rootViewController=nil:)
banner.rootViewController = (UITabBarController *)self.view.window.rootViewController