1. ホーム
  2. objective-c

[解決済み] Xcodeの "unused variable "の警告を消すにはどうしたらいいですか?

2023-01-17 01:21:42

質問

未使用の変数の警告がなぜ起こるか、正確に理解しています。ほとんどの場合、信じられないほど便利なので、私は一般的にそれらを抑制したいとは思いません。しかし、次の (作為的な) コードを考えてみてください。

NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);

Xcodeのレポートでは saved が未使用の変数であると報告しますが、もちろんそうではありません。私は、これは NSAssert1 がマクロであるためと思われます。その NS_BLOCK_ASSERTIONS のマクロは ではなく が定義されていないので、Objective C のアサーションは確実に有効になっています。

何も害はないのですが、整頓されていなくて煩わしいと思うので、これを抑制したいのですが、どうしたらいいのかわかりません。変数をそれ自身に代入すると、コンパイラの警告を取り除くことができますが、そのようなものが存在するのであれば、私はむしろ正しい方法でそれを行うことを望みます。

どのように解決するのですか?

新しい LLVM コンパイラでまだサポートされているかどうかは不明ですが、GCC には "unused" 属性があり、この警告を抑制するために使用することができます。

BOOL saved __attribute__((unused)) = [moc save:&error];

別の方法として(LLVMが上記をサポートしていない場合)、変数宣言を別の行に分割し、マクロが展開されるかどうかにかかわらず、変数が "used"であることを保証することができます。

BOOL saved = NO;
saved = [moc save:&error];