2012-01-09 59 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]不禁止警告。我唯一的猜测是它曾经被包含来压制警告,但代码已经被重构,并且不再需要。