EXC_BAD_ACCESS в разных местах, но все в NSUSERDEFAULTS - PullRequest
0 голосов
/ 04 мая 2011

Я постоянно получаю сообщение об ошибке EXC_BAD_ACCESS в нескольких местах, но всегда в nsuserdefaults ниже указаны места, в которых он продолжает выдавать ошибки.

    //Get results
NSString *currentYes = [[NSUserDefaults standardUserDefaults] stringForKey:@"yes"];
NSString *currentNo = [[NSUserDefaults standardUserDefaults] stringForKey:@"no"];

И снова здесь:

- (IBAction)VoteQ1:(id)sender
{
    //Save question 1 to device
    [[NSUserDefaults standardUserDefaults] setObject:@"Q1" forKey:@"questionnumber"];
    [[NSUserDefaults standardUserDefaults] setObject:[self.Question1 objectAtIndex:0] forKey:@"Question"];
    [[NSUserDefaults standardUserDefaults] setObject:[self.Question1 objectAtIndex:1] forKey:@"yes"];
    [[NSUserDefaults standardUserDefaults] setObject:[self.Question1 objectAtIndex:2]forKey:@"no"];
    [[NSUserDefaults standardUserDefaults] setObject:[self.Question1 objectAtIndex:3] forKey:@"start"];
    [[NSUserDefaults standardUserDefaults] setObject:[self.Question1 objectAtIndex:4] forKey:@"end"];
    [[NSUserDefaults standardUserDefaults] synchronize];


    FlipViewController *controller = [[FlipViewController alloc] initWithNibName:@"FlipView" bundle:nil];
        controller.delegate = self;

        controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:controller animated:YES];

        [controller release];
}

iтакже есть (IBAction)VoteQ2:(id)sender и (IBAction)VoteQ3:(id)sender, которые такие же, как указано выше, но self.question1 похож на вопрос 2 или 3.

Ошибка возникает, когда я щелкаю другую ibaction после щелчка и завершения флип-представления.

Пожалуйста, помогите, я верю, что это как-то связано с тем, что nsuserdefaults не выпускает его самостоятельно

Спасибо

Ответы [ 3 ]

0 голосов
/ 04 мая 2011

Полагаю, у вашего объекта NSArray, self.Question1, нет границ.т.е. есть только 2 объекта внутри self.Question1, но вы пытаетесь получить objectAtIndex 4.

0 голосов
/ 04 мая 2011

Это может быть проблема с кастингом. Вы устанавливаете объект

setObject:[self.Question1 objectAtIndex:1]

но извлекаем его в строку NSString:

stringForKey:@"yes"

Предполагая , что ваши объекты в массиве Question1 являются NSString объектами, попробуйте это:

NSString *currentYes = (NSString *)[[NSUserDefaults standardUserDefaults] objectForKey:@"yes"];
0 голосов
/ 04 мая 2011

Эти вещи обычно связаны с использованием указателя на просроченный объект.Вы можете бегать с включенными зомби, чтобы помочь изолировать.

Посмотрите на обратную дорожку стека, чтобы выделить линию, на которой она происходит, и отчитайтесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...