Сбой при попытке сохранить в NSUserDefaults - PullRequest
0 голосов
/ 11 декабря 2011

Когда я пытаюсь сохранить текущий счетчик уровней в NSUserDefaults в функции applicationWillTerminate, он вылетает у меня.Зачем ?

----------------------- AppDelegate.m -----------------------

        - (void)applicationWillTerminate:(UIApplication *)application {
            CCDirector *director = [CCDirector sharedDirector];

            HelloWorldLayer *hWClass = [[HelloWorldLayer alloc]init];

            NSNumber *lCount = [NSNumber numberWithInt:hWClass -> level];

            hWClass -> lvlCount =[NSUserDefaults standardUserDefaults];
            [hWClass -> lvlCount setObject:lCount  forKey:@"levelCount"];



            [[director openGLView] removeFromSuperview];

            [viewController release];

            [window release];

            [director end]; 
        }

----------------------- HelloWorldLayer.h -----------------------

        ...{
        @public
        int level;
        NSUserDefaults *lvlCount;
        int health;
        ...
        }
        @property (nonatomic,retain) NSUserDefaults *lvlCount;

----------------------- HelloWorldLayer.m ----------------------

  NSNumber *currentLevel = [[NSUserDefaults standardUserDefaults] objectForKey:@"levelCount"];
        if (currentLevel != nil){
        int cLevel = [currentLevel integerValue];

        [self generateLevelFromPlist:cLevel];
        }else{
            [self generateLevelFromPlist:1];
        }

1 Ответ

0 голосов
/ 11 декабря 2011

Вы обращаетесь к переменной экземпляра напрямую, используя ->, а затем присваиваете ей автоматически выпущенное значение.Вам необходимо получить доступ к свойству, используя точечный синтаксис для его правильного сохранения.

   hWClass.lvlCount =[NSUserDefaults standardUserDefaults];
   [hWClass.lvlCount setObject:lCount  forKey:@"levelCount"];

Также измените следующие объявления переменных на private, удалив @public или изменив его на @private, чтобы у вас не былоэтот вопрос больше.

    ...{
    @private
    int level;
    NSUserDefaults *lvlCount;
    int health;
    ...
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...