0

我解决了这个问题,当你开始一个问题时出现的链接,
他们告诉我如何,但不是为什么......
所以我的问题是理解编译器警告语言

在 Xcode
中,我想要一个触发 AlertView 的按钮来假设用户在其中输入的结果:

UITextField *textfield = [alertView textFieldAtIndex:0];
circumference = [textfield.text floatValue];
NSString *myString = textfield.text;
[_myButton setTitle:(@"%@",myString) forState:UIControlStateNormal];

好吧,它有效,加上警告。
我应该在这里提出我的问题:警告说“未使用表达式结果”。他们是怎么理解的?我正在使用表达式的结果 - 就在按钮上。

对于那些有关的,这是修复:

UITextField *textfield = [alertView textFieldAtIndex:0];
circumference = [textfield.text floatValue];
[_myButton setTitle:[NSString stringWithFormat:@"%@",textfield.text] forState:UIControlStateNormal];
4

2 回答 2

1
[_myButton setTitle:(@"%@",myString) forState:UIControlStateNormal];

没有什么意义。我实际上希望出现语法错误,但由于逗号运算符

(@"%@",myString)

其实就像写

({
    @"%@";
    myString;
})

所以你写了相当于

[_myButton setTitle:({
    @"%@";
    myString;
}) forState:UIControlStateNormal];

(如果有人想知道,是的,这也是有效的语法。)

所以最终(@"%@",myString)计算结果为myString,但表达式@"%@"结果未使用,您会收到警告。

setTitle:forState:期望 aNSString作为第一个参数,而您碰巧已经有一个NSString名为myString.

做就是了

[_myButton setTitle:myString forState:UIControlStateNormal];
于 2013-11-04T07:21:03.780 回答
0

您正在接收textfield变量中的值,myString但您没有在其他任何地方使用它。这就是您收到警告"Expression Result Unused"的原因。只需删除该行。

UITextField *textfield = [alertView textFieldAtIndex:0];
circumference = [textfield.text floatValue];
//NSString *myString = textfield.text;
[_myButton setTitle:textfield.text forState:UIControlStateNormal];
于 2013-11-04T07:24:38.580 回答