这行代码的目的是什么?

时间:2012-01-09 16:06:00

标签: objective-c syntax

考虑一下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解析例程中,这种模式会重复多次。如果它只发生一次,我会怀疑有人做了些傻事,但考虑到它的流行,我想知道我错过了什么。

编辑:Benedict Cohen给出的答案是正确的。永远不会使用elementString变量。这种模式的大多数实例都埋没在数百行方法中,我没有看到它从未使用过。

1 个答案:

答案 0 :(得分:4)

如果没有编译器,则会发出警告elementString未使用。

编辑:实际上,由于elementString被声明然后设置的方式,我不认为这会引发警告....

编辑:刚试过它。 [elementString self]并未压制警告。我唯一的猜测是它曾被包含在内以抑制警告但代码已被重构并且不再需要它。