簡體   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