繁体   English   中英

不使用属性访问结果,但NSLog可以正常工作

[英]Property access results unused but NSLog works fine

我试图在文本标签中显示结果,但是得到的结果与NSLog不同:

if( [elementName isEqualToString:@"CommunityID"])
    {
        self.recordResults = FALSE;
        ResultLabel.text = @"CommunityID: %@", self.soapResults;
        NSLog(@"CommunityID:%@",self.soapResults);
        self.soapResults = nil;
    }

NSlog可以正确显示文本结果,但UILabel不能。 错误显示:

“未使用属性访问结果-吸气剂不应用于副作用”

我不明白NSlog如何很好地获取信息,而其他人却不知道? 有任何想法吗?

您不能直接分配,需要使用stringWithFormat属性

ResultLabel.text = [NSString stringWithFormat:@"CommunityID: %@", self.soapResults];

如此您就知道发生了什么以及编译器警告是关于什么的……

在C和Objective-C中,不分隔函数或方法调用中的参数的逗号( , )是逗号运算符。 它是一个复合表达式。 评估左手子表达式,但其结果被丢弃。 然后,评估右手子表达式,并且整个复合表达式取其值。

在您的情况下,复合表达式仅用作语句,而未使用其结果。 因此,您的声明:

ResultLabel.text = @"CommunityID: %@", self.soapResults;

等于:

ResultLabel.text = @"CommunityID: %@";
self.soapResults;

这些语句的第二个调用属性获取器,并丢弃结果值。 编译器警告您。 要么您不是要这样做(在这种情况下),要么是您要调用吸气剂,因为吸气剂具有您想要的副作用,这是一个非常糟糕的主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM