触发EXC_BAD_ACCESS

时间:2010-10-08 06:03:01

标签: iphone

您好我正在尝试实施验证码功能。以下代码,我用于生成随机字:

-(void) createCaptchaWord{
        lettersArray = [[NSMutableArray alloc] initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z", nil];
        randomWord = @"";

    for(NSUInteger i=0;i<5;i++){
        NSUInteger randomNumber = arc4random()%[lettersArray count];
        randomWord = [randomWord stringByAppendingString:[lettersArray objectAtIndex:randomNumber]];
        //randomWord = [NSString stringWithFormat:@"%@%@",randomWord,[lettersArray objectAtIndex:randomNumber]];
    }

    NSString *captchaUrl = [NSString stringWithFormat:@"%@%@",CommonFunctions.captchaImgUrl,randomWord];
    UIImage *captchaImage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:captchaUrl]]];

    [captchaImgView setImage:captchaImage];
}

问题在于变量randomWord。我可以在名为“createCaptchaWord”的方法中访问此变量。还有另一个功能可以保存输入的所有信息。在那个方法中,当我试图访问变量“randomWord”时,我得到了异常EXC_BAD_ACCESS。然后我启用了NSZombie。因此,我在控制台中收到以下消息:

- [CFString respondsToSelector:]:发送到解除分配的实例0x4656c10的消息

任何人都可以帮我解决这个问题。

此致 Sreelash

1 个答案:

答案 0 :(得分:1)

您必须使用randomWord或setter方法(当它是属性时)保留将retain变量分配的值,例如self.randomWord = ...