【问题标题】:AdMob interstitial memory leak? Sprite kitAdMob 插页式内存泄漏?雪碧套件
【发布时间】:2016-03-19 18:26:28
【问题描述】:

我对 AdMob 和 sprite kit 有疑问。

每次显示或加载广告时,都会大大增加内存使用量! EndGameScene 打开时会调用“showAd”,按下回放按钮时会调用“loadAd”。

广告效果很好。

游戏开始时内存使用量大约是 50mb,之后很少有广告,它至少是 70-100mb!

那么我做错了什么:

GameViewController.m

- (void)viewDidLoad{
[super viewDidLoad];



[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"showAd" object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"loadAd" object:nil];

self.interstitial = [self createAndLoadInterstitial];
self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-<id>"];

GADRequest *request = [GADRequest request];
// Requests test ads on test devices.
request.testDevices = @[@"0000000"];
[self.interstitial loadRequest:request];

//etc
}


- (void)handleNotification:(NSNotification *)notification{
if ([notification.name isEqualToString:@"showAd"]) {
    if (self.interstitial.isReady) {
        [ self.interstitial presentFromRootViewController:self];
    }

    else {

    }

}

if ([notification.name isEqualToString:@"loadAd"]) {
   self.interstitial = [self createAndLoadInterstitial];
}
}
- (GADInterstitial *)createAndLoadInterstitial {
GADInterstitial *interstitial =
[[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-<id>"];
interstitial.delegate = self;
[interstitial loadRequest:[GADRequest request]];
return interstitial;}

谢谢!

【问题讨论】:

    标签: objective-c memory-leaks sprite-kit admob


    【解决方案1】:

    您每次都在创建一个新的 GADInterstitial 对象,该对象启动加载请求。我猜是因为它正在等待答案,所以它永远不会再从内存中释放出来。 更好的方法是将 GADInterstitial 存储在全局属性中,如果您需要新广告,只需调用新的 loadRequest。

    【讨论】:

      猜你喜欢
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 2016-10-16
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多