2012-01-09 90 views
3

考慮這個片段中的Objective-C的:這行代碼的目的是什麼?

NSString *elementString = nil; 

if(elementText != NULL) { 
    elementString = [NSString stringWithCString:(char*)elementText encoding:NSUTF8StringEncoding]; 
    [elementString self]; 
    xmlFree(elementText); 
} 

我明白[elementString self]返回elementString參考。我的問題是,由於這裏沒有使用返回值,爲什麼要調用[elementString self]

在我維護的應用程序中,這種模式在整個XML解析例程中重複了很多次。如果它只發生一次,我只是懷疑有人做了一件愚蠢的事情,但鑑於它的流行,我想知道我錯過了什麼。

編輯:本篤科恩給出的答案是正確的。 elementString變量沒有被使用過。這種模式的大多數情況都被埋在了幾百行的方法中,我沒有看到它從未被使用過。

+1

你能提供比一個片段嗎?否則,您引用的代碼行只是簡單地抑制編譯器警告。 – 2012-01-09 16:11:49

+0

我從來沒有見過這個。你在哪裏看到它,以至於你認爲它「流行」? – 2012-01-09 16:18:00

+0

@Jonathan Grynspan:當我說'流行'時,我的意思是我在維護這個應用程序。這種模式的實例存在於125個不同的類文件中。 – 2012-01-09 16:27:26

回答

4

沒有編譯器會發出警告,elementString未被使用。

編輯:實際上,由於該elementString聲明,然後設置,我不認爲這會引發警告的方式....

編輯:只是測試它。 [elementString self]不禁止警告。我唯一的猜測是它曾經被包含來壓制警告,但代碼已經被重構,並且不再需要。