100 votes

Comment puis-je me débarrasser d'un avertissement de "variable inutilisée" dans Xcode?

Je comprends exactement pourquoi inutilisés variable d'avertissement. Je ne veux pas les supprimer en général, car ils sont très utiles dans la plupart des cas. Cependant, considérer les points suivants (fictive) du code.

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

Xcode rapports qu' saved est une variable inutilisée, quand il n'est bien sûr pas. Je suppose que c'est parce qu' NSAssert1 est une macro. L' NS_BLOCK_ASSERTIONS macro n'est pas défini, de manière Objective C affirmations sont certainement activé.

Alors qu'il ne fait de mal à rien, je trouve ça assez brouillon et ennuyeux, et je veux le supprimer, mais je ne suis pas sûr de la façon de le faire. L'affectation de la variable elle-même se débarrasser de l'avertissement du compilateur, mais je préfère le faire de la "bonne" façon si une telle chose existe.

110voto

Sherm Pendley Points 10822

Je ne sais pas s'il est toujours pris en charge par le nouveau compilateur LLVM, mais GCC a un attribut "inutilisé" que vous pouvez utiliser pour supprimer cet avertissement:

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

Sinon, dans le cas où LLVM ne prend pas en charge ce qui précède, vous pouvez scinder la déclaration de variable en une ligne distincte, en garantissant que la variable sera "utilisée", que la macro se développe ou non:

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

110voto

JOM Points 4282

En utilisant Xcode 4.3.2 et découvert que cela semble fonctionner (moins d’écriture)

 BOOL saved __unused;
 

38voto

Black Frog Points 6902

Dans Xcode, vous pouvez définir les avertissements pour "Variables inutilisées". Allez dans "Paramètres de construction" pour la cible et filtrez avec le mot "non utilisé"

Voici une capture d'écran: Capture d'écran de Builld Settings

Je vous suggère de ne le changer que pour Debug. De cette façon, vous ne manquerez de rien dans votre version finale.

22voto

Danny Xu Points 299
 NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
#pragma unused(saved)
 

Essayez comme ça. Ça marche pour moi. Cela fonctionnera pour vous aussi.

16voto

user3125367 Points 1175

Le seul moyen simple et portable de marquer une variable comme utilisée est… de l'utiliser.

 BOOL saved = ...;
(void)saved; // now used
 

Vous pouvez cependant être satisfait des extensions spécifiques au compilateur déjà décrites.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X