您好我正在尝试实施验证码功能。以下代码,我用于生成随机字:
-(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
答案 0 :(得分:1)
您必须使用randomWord
或setter方法(当它是属性时)保留将retain
变量分配的值,例如self.randomWord = ...