我完全理解为什么会出现未使用的变量警告。我不想一般地压制它们,因为它们在大多数情况下都非常有用。但是,请考虑以下(人为的)代码。
NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
Xcode 报告 saved
是一个未使用的变量,当然它不是。我怀疑这是因为 NSAssert1
是一个宏。 NS_BLOCK_ASSERTIONS
宏是未定义的,因此肯定启用了 Objective C 断言。
虽然它不会伤害任何东西,但我觉得它不整洁而且很烦人,我想压制它,但我不知道该怎么做。将变量分配给自身可以消除编译器警告,但如果存在这种情况,我宁愿以“正确”的方式进行操作。
最佳答案
我不确定新的 LLVM 编译器是否仍然支持它,但 GCC 有一个“未使用”属性可以用来抑制该警告:
BOOL saved __attribute__((unused)) = [moc save:&error];
或者(如果 LLVM 不支持上述内容),您可以将变量声明拆分为单独的行,以保证无论宏扩展与否都将“使用”该变量:
BOOL saved = NO;
saved = [moc save:&error];
关于objective-c - 如何摆脱 Xcode 中的 "unused variable"警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451123/