如何摆脱Xcode中的“未使用variables”警告?
我明白为什么没有使用的variables警告发生。 我不想一般地压制他们,因为他们在大多数情况下是非常有用的。 但是,请考虑以下(人为)代码。
NSError *error = nil; BOOL saved = [moc save:&error]; NSAssert1(saved, @"Dude!!1! %@!!!", error);
Xcode报告saved
是一个未使用的variables,当然不是。 我怀疑这是因为NSAssert1
是一个macros。 NS_BLOCK_ASSERTIONS
macros没有定义,所以Objective C断言是肯定启用的。
虽然它没有伤害任何东西,但是我发现它不整洁,烦人,我想压制它,但我不知道该怎么做。 把variables赋给自己可以摆脱编译器的警告,但是如果存在这样的事情,我宁愿用“正确”的方式来做。
我不确定它是否仍然在新的LLVM编译器中受支持,但是GCC有一个“未使用”属性可以用来抑制这个警告:
BOOL saved __attribute__((unused)) = [moc save:&error];
或者(如果LLVM不支持上述情况),可以将variables声明拆分成单独的一行,保证variables是否被macros“扩展”使用:
BOOL saved = NO; saved = [moc save:&error];
使用Xcode 4.3.2,发现这似乎工作(less写)
BOOL saved __unused;
在Xcode中,您可以设置“未使用的variables”的警告。 转到目标的“生成设置”,并用“未使用”
这是一个截图:
我build议你只修改它的debugging。 这样你就不会错过发布版本的任何东西。
NSError *error = nil; BOOL saved = [moc save:&error]; NSAssert1(saved, @"Dude!!1! %@!!!", error); #pragma unused(saved)
像这样尝试。 它正在为我工作。 它也适用于你。
唯一简单和便携的方式来标记variables使用是…使用它。
BOOL saved = ...; (void)saved; // now used
不过,您可能对已经描述的特定于编译器的扩展感到满意。
尝试使用:__unused属性。 适用于Xcode 5
您可以在“Release”上设置“No” LLVM compliler 2.0警告
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunused-variable" NSUInteger abc; /// Your unused variable #pragma clang diagnostic pop
资源
使它占用两条线。 分开声明和默认值
BOOL enabled = NO; // ... BOOL enabled; enabled = NO;
这就是你在C中执行的方式,因此也是Objective-C。
即使您没有启用警告,将返回值标记为明确忽略也是一个好主意。 这也是为了向其他开发者展示,你不仅忘记了返回值 – 你确实明确地select了忽略它。
(void)[moc save:&error];
编辑:编译器忽略强制转换为void
,所以它不应该影响性能 – 这只是一个很好的干净的人类注释。
如果你想压制Xcode中的所有警告,可以按照以下步骤进行目标 – >编译设置 – > Swift编译器 – 警告策略 – >禁止警告 – >是