为什么我收到此错误?
if(appDelegate.lastLevelIndex!=0) {
[self.view addSubview:creditView];
NSString *level=[NSString stringWithFormat:(@"%d",appDelegate.lastLevelIndex)];
label.text=level;
appDelegate.lastLevelIndex=0;
}
由于原始错误,我也在这里遇到了崩溃。
答案 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"
无效。