有时我声明了一个ivar,但过了一会儿我不再使用它了。我想从我的代码中删除此类杂物,但是我找不到能够向我显示未使用的ivars的警告。

是否存在Xcode的工具或内置功能,可以让我查找所有未使用的ivars?

我看到静态分析器具有CLANG_ANALYZER_OBJC_UNUSED_IVARS,但是它似乎没有任何作用。

@implementation AppDelegate
{
@private
    BOOL _foo; // Never read or written to
}

如果将CLANG_ANALYZER_OBJC_UNUSED_IVARS(未使用的ivars)设置为YES,则在Xcode 5中运行分析器将不会产生警告。

最佳答案

基于the relevant Clang source code和一些快速测试,似乎分析器不会查看未同时在@interface中声明和未标记为@private的ivars。

@interface Igloo : NSObject
{
    NSString * address;    // No warning
    @private
    NSInteger radius;    // Warning
}
@end

@implementation Igloo
{
    NSInteger numWindows;    // No warning
    @private    // Has no real effect, of course; just testing
    NSString * doormatText;    // No warning
}

@end

我建议提交错误/提交补丁。

关于objective-c - 如何在Xcode中找到未使用的ivars,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21103089/

10-10 17:36