Gab*_*Gab 4 random exc-bad-access objective-c char
我是Objective-C编程的新手,当我运行我的小程序时,我收到此错误(我只想生成一个随机字符).所以这就是我到目前为止所做的:
(IBAction)generate{
int a = arc4random() % 26;
NSString * chaine = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char lettre = [chaine characterAtIndex:a];
NSMutableString * mot = [[NSMutableString alloc] initWithCharacters:lettre length:1];
hasard.text = mot;
}
Run Code Online (Sandbox Code Playgroud)
我试图简单地将我的变量'lettre'放在hasard.text中,但它不能用于错误'不兼容的整数到指针转换分配到' NSString *'来自' char'.所以我创建了一个NSMutableString包含我的角色.
当我在第五行手动输入字符"e"而不是变量"letter"时,它运行良好.因为我可以在调试器中看到'lettre'包含一个随机字母,为什么我会在标题中得到错误?
(EXC_BAD_ACCESS (code=2, address=0x42)).
该函数期望指向一个字符的指针,你给它一个文字字符.您需要创建一个指向它的指针.此外,characterAtIndex不会像您想象的那样返回角色.它返回一个unicode字符,实际上是一个unsigned short而不是一个unsigned char.但是,如果您将代码更改为此代码,它将起作用:
const unichar foo = [@"Test" characterAtIndex:0];
NSString *test = [NSString stringWithCharacters:&foo length:1]; //Note the &
Run Code Online (Sandbox Code Playgroud)
编辑但最简单的方法就是这样:
char randChar = arc4random_uniform(26) + 'A'; //Changed in response to Jason Coco's comment
NSString *mot = [NSString stringWithFormat:@"%c", randChar];
Run Code Online (Sandbox Code Playgroud)