Xcode中的表达式结果未使用错误

时间:2011-08-05 16:16:21

标签: objective-c

为什么我收到此错误?

if(appDelegate.lastLevelIndex!=0) {
        [self.view addSubview:creditView];
        NSString *level=[NSString stringWithFormat:(@"%d",appDelegate.lastLevelIndex)];
        label.text=level;
        appDelegate.lastLevelIndex=0;
    }

由于原始错误,我也在这里遇到了崩溃。

1 个答案:

答案 0 :(得分:4)

删除括号:

NSString *level=[NSString stringWithFormat:(@"%d",appDelegate.lastLevelIndex)];
                                           ^                                ^

导致:

NSString *level=[NSString stringWithFormat:@"%d",appDelegate.lastLevelIndex];

方法stringWithFormat:需要一个以逗号分隔的参数列表。第一个参数是一个格式字符串,用作替换剩余参数值的模板。

但是,在括号到位的情况下,您将一个参数传递给stringWithFormat:,这是评估括号中包含的表达式的结果。

(@"%d",appDelegate.lastLevelIndex)
      ^

在C和扩展中,Objective-C从左到右计算由comma分隔的表达式列表,结果的类型和值是右操作数的类型和值。 / p>

因此,您将appDelegate.lastLevelIndex的值作为整数传递给stringWithFormat:方法的唯一参数,该方法需要NSString *。因此,崩溃。 “表达结果未使用”警告是由于左表达式@"%d"无效。