Objective c AdMob间隙内存泄漏?雪碧套装

Objective c AdMob间隙内存泄漏?雪碧套装,objective-c,memory-leaks,sprite-kit,admob,Objective C,Memory Leaks,Sprite Kit,Admob,我对AdMob和sprite套件有问题 每次广告显示或加载时,都会大大增加内存使用量! 当EndGameSecene打开时,它将调用“showAd”,当重播按钮被按下时,它将调用“loadAd” 广告效果很好 当游戏开始时,内存使用量大约为50mb,之后很少出现广告,至少为70-100mb 那么我做错了什么: GameViewController.m - (void)viewDidLoad{ [super viewDidLoad]; [[NSNotificationCenter defau

我对AdMob和sprite套件有问题

每次广告显示或加载时,都会大大增加内存使用量! 当EndGameSecene打开时,它将调用“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;}
-(void)viewDidLoad{
[超级视图下载];
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(handleNotification:)名称:@“showAd”对象:nil];
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(handleNotification:)名称:@“loadAd”对象:nil];
self.interstival=[self createandloadinterstival];
self.interstitual=[[GadInterstitual alloc]initWithAdUnitID:@“ca app pub-”;
GADRequest*请求=[GADRequest请求];
//在测试设备上请求测试广告。
request.testDevices=@[@“0000000”];
[自填隙加载请求:请求];
//等
}
-(无效)处理通知:(NSNotification*)通知{
如果([notification.name IsequalString:@“showAd”]){
if(自间隙已就绪){
[self.interstitial presentFromRootViewController:self];
}
否则{
}
}
如果([notification.name IsequalString:@“loadAd”]){
self.interstival=[self createandloadinterstival];
}
}
-(GadInterstitual*)创建并加载Interstitual{
间隙的=
[[GadInterstitual alloc]initWithAdUnitID:@“ca app pub-”;
interstitual.delegate=self;
[间隙加载请求:[GADDRequest]];
返回间隙;}

谢谢

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