我在斯坦福CS193p的任务2(在iTunes U上),我对EXC_BAD_ACCESS错误感到困惑。
在第一个作业中,我们使用了这样的东西:
- (IBAction)operationPressed:(UIButton *)sender {
//...
NSString *resultString = [NSString stringWithFormat:@"%g", result];
self.display.text = resultString;
}
这很好用。现在,我正在尝试与NSSet
类似的东西:
+ (double)runProgram:(id)program{
NSMutableArray *stack;
NSSet *listOfFunctions = [NSSet setWithObjects:@"cos", @"sin", @"sqrt", "π", @"tan", @"neg", @"^", @"rad", @"+", @"-", @"/", @"*", nil];
//...
}
运行该函数时,*listOfFunctions
行上的EXC_BAD_ACCESS崩溃。我的问题是:为什么第一个示例工作并从+ stringWithFormat:
函数生成NSString,而第二个示例不生成NSSet?我需要对[[NSSet alloc] init]
做些什么吗?我也试过NSSet的+ initWithObjects:
,没有运气。
答案 0 :(得分:3)
集合中的一个字符串是C字符串,而不是NSString
。
换句话说,您忘记了@
字符串之前的"π"
。
答案 1 :(得分:0)
"π"
您忘记了此字符串前面的@
符号,这使其成为C字符串而不是NSString。请改用@"π"
。