我正在尝试学习Objective C(和C一起),并编写一个交互式控制台应用程序。我的背景是Java,而Objective C中的许多差异对我来说仍然不直观。 我写了以下方法:
-(void)start {
[self startMenu]; // calls a method that prints the menu options
char selectedOption = '\0'; // instantiating selectedOption
char w = 'w';
char n = 'n';
char b = 'b';
bool validOption = NO;
while(!validOption) {
scanf("%c", selectedOption);
if(selectedOption == w) {
[self setWinningScore];
} else if(selectedOption == n) {
[self setName];
} else if(selectedOption == b) {
break;
} else {
printf("'%s' is not a valid option.\n", selectedOption);
}
}
}
但无论何时运行,当它到达scanf("%c", *selectedOption);
行时都会出现EXC_BAD_ACCESS错误。
我用Google搜索了这个错误。我找到了Lou Franco的 this article ,但我仍然不知道我能做些什么。
修改
正如布莱恩指出的那样,我误用指针和指针解除引用。不幸的是,在清理我的代码之后,它仍然会出现同样的错误。
答案 0 :(得分:4)
请先了解指针是什么。
你的问题是试图取消引用无效指针。
-(void)start {
[self startMenu]; // calls a method that prints the menu options
char selectedOption = '\0';
char w = 'w';
char n = 'n';
char b = 'b';
bool validOption = NO;
while(!validOption) {
scanf("%c", &selectedOption);
if(selectedOption == w) {
[self setWinningScore];
} else if(selectedOption == n) {
[self setName];
} else if(selectedOption == b) {
break;
} else {
printf("'%c' is not a valid option.\n", selectedOption);
}
}
}