Objective c 如何在函数范围内声明对象?

Objective c 如何在函数范围内声明对象?,objective-c,exc-bad-access,Objective C,Exc Bad Access,我正在参加斯坦福CS193p(iTunes U上)的作业2,我被一个EXC_BAD_访问错误弄糊涂了 在第一个作业中,我们使用了如下内容: - (IBAction)operationPressed:(UIButton *)sender { //... NSString *resultString = [NSString stringWithFormat:@"%g", result]; self.display.text = resultString; } 这很有效。现在

我正在参加斯坦福CS193p(iTunes U上)的作业2,我被一个EXC_BAD_访问错误弄糊涂了

在第一个作业中,我们使用了如下内容:

- (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_访问会崩溃。我的问题是:为什么第一个示例可以使用
+stringWithFormat:
函数生成NSString,而第二个示例不能生成NSSet?是否需要使用
[[NSSet alloc]init]
执行某些操作?我还尝试使用NSSet的
+initWithObjects:
,但运气不佳。

您的集合中有一个字符串是C字符串,而不是
NSString

换句话说,您忘记了
@
“π”
字符串之前

"π"

您忘记了此字符串前面的
@
符号,这使其成为C字符串而不是NSString。使用
@“π”

让我看看选择哪个选项而不是“太本地化”…这个问题似乎离题了,因为它是关于缺少at符号的。属于typewriting.stackexchange.com。(说真的,这太本地化了。)我还看到过与此完全相同的问题的其他问题-一个C字符串,其中预期会出现
NSString
。如果其他人也有同样的问题,它真的太本地化了吗?当然,其他问题可能无法通过搜索找到。@rmaddy这是一个简单的打字错误问题,因此它是。@rmaddy(此外,它也是一个简单的“我懒得打开调试器”问题,因此它更适合现在过时的“太本地化了”。)是的,我还不能接受这个答案。这就是我所说的“过于本地化”。谢谢