EXC_BAD_ACCESS在不同的地方,但都在NSUSERDEFAULTS上

时间:2011-05-04 17:13:24

标签: iphone objective-c nsuserdefaults

我经常在多个地方收到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];
}

我也有(IBAction)VoteQ2:(id)sender(IBAction)VoteQ3:(id)sender与上面相同,但self.question1就像问题2或3。

单击并完成翻转视图后,单击另一个ibaction时会出现错误。

请帮助我相信它与nsuserdefaults没有自我发布有关

由于

3 个答案:

答案 0 :(得分:0)

这些事情通常是由于使用指向过期对象的指针。您可以在启用僵尸的情况下运行以帮助隔离。

查看堆栈后退轨道以隔离其发生的行并报告回来。

答案 1 :(得分:0)

我猜你NSArray对象,self.Question1,是超出界限的。 即self.Question1中只有2个对象,但你试图获得objectAtIndex 4。

答案 2 :(得分:0)

这可能是一个铸造问题。您正在设置对象

setObject:[self.Question1 objectAtIndex:1]

但是将其提取到NSString:

stringForKey:@"yes"

假设 Question1数组中的对象是NSString对象,请尝试:

NSString *currentYes = (NSString *)[[NSUserDefaults standardUserDefaults] objectForKey:@"yes"];