iOS内存在app中不断增加,看似无缘无故

时间:2014-03-11 05:44:49

标签: ios memory

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

它开始使用大约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

Instruments

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

两个建议,

  1. 尝试替换

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

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

    [super viewWillLayoutSubviews];