iOS内存似乎无缘无故地在应用程序中不断增加

这是我的应用程序的入口视图控制器。

它开始使用约6.5MB的内存,然后不断攀升,以每秒约0.1mb的速度永远。

我究竟做错了什么?

就我所知,这些代码中的任何一个都不会泄漏,特别是每次都运行一次。

而且,删除大部分内容似乎没有帮助。 想法?

// // ViewController.m // Paddle Jumper // // Created by Chance Daniel on 1/18/14. // Copyright (c) 2014 Max Hudson. All rights reserved. // //#import "Flurry.h" #import "ViewController.h" //#import "startViewController.h" @implementation ViewController{ BOOL sceneSetUp; } - (void)viewWillLayoutSubviews { if(!sceneSetUp){ [super viewWillLayoutSubviews]; // Configure the view SKView * skView = (SKView *)self.view; //skView.showsFPS = YES; skView.showsNodeCount = YES; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if([[defaults objectForKey:@"firstTime"] intValue] != 1){ [defaults setObject:[NSNumber numberWithInt:1] forKey:@"firstTime"]; [defaults setObject:@"ggr" forKey:@"skinSelected"]; [defaults setObject:[NSNumber numberWithInt:2] forKey:@"ggrOwned"]; [defaults setObject:[NSNumber numberWithInt:100] forKey:@"gona"]; [defaults setObject:[NSNumber numberWithInt:1350] forKey:@"points"]; [defaults setObject:[NSNumber numberWithInt:7] forKey:@"livesLeftValue"]; [defaults setObject:[NSNumber numberWithInt:3] forKey:@"shieldsLeftValue"]; [defaults setObject:[NSNumber numberWithInt:2] forKey:@"lvlTwoLeftValue"]; [defaults setObject:[NSNumber numberWithInt:0] forKey:@"lvlThreeLeftValue"]; } if(![defaults objectForKey:@"tut_game1"]){ [defaults setObject:[NSNumber numberWithInt:1] forKey:@"tut_game1"]; [defaults setObject:[NSNumber numberWithInt:1] forKey:@"tut_store"]; [defaults setObject:[NSNumber numberWithInt:1] forKey:@"tut_daily"]; } [defaults synchronize]; // Create and configure the scene. //SKScene * startScene = [StartViewController sceneWithSize:skView.bounds.size]; //startScene.scaleMode = SKSceneScaleModeAspectFill; // Present the scene. //[skView presentScene:startScene]; //[skView presentScene:scene]; sceneSetUp = YES; } } -(void) switchScene{ } - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { return UIInterfaceOrientationMaskAllButUpsideDown; } else { return UIInterfaceOrientationMaskAll; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } @end 

仪器

问题是你已经打开僵尸。 造成泄漏正是僵尸所做的! (“什么僵尸”看起来似乎错了……)它的全部目的是防止物体被释放。 当僵尸是(?)打开时,你不应该检查内存使用情况。

两个build议,

  1. 尝试更换

     SKView * skView = (SKView *)self.view; 

     __weak SKView * skView = (SKView *)self.view; 
  2. 将以下代码保留在if条件之外。

     [super viewWillLayoutSubviews];