Je comprends exactement pourquoi des avertissements de variables inutilisées se produisent. Je ne veux pas les supprimer en général, car ils sont incroyablement utiles dans la plupart des cas. Cependant, considérez le code (artificiel) suivant.
NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
Xcode signale qu'il saved
s'agit d'une variable inutilisée, alors que ce n'est bien sûr pas le cas. Je soupçonne que c'est parce que NSAssert1
c'est une macro. La NS_BLOCK_ASSERTIONS
macro n'est pas définie, donc les assertions Objective C sont définitivement activées.
Bien que cela ne fasse aucun mal, je trouve cela désordonné et ennuyeux, et je veux le supprimer, mais je ne sais pas comment le faire. Assigner la variable à elle-même supprime l'avertissement du compilateur, mais je préfère le faire de la «bonne» façon si une telle chose existe.
la source
'saved' was marked as unused but was used
Dans Xcode, vous pouvez définir les avertissements pour «Variables inutilisées». Accédez à "Paramètres de construction" pour la cible et filtrez avec le mot "inutilisé"
Voici une capture d'écran:
Je vous suggère de le changer uniquement pour le débogage. De cette façon, vous ne manquez rien dans votre version de sortie.
la source
Essayez comme ça. Ça marche pour moi. Cela fonctionnera aussi pour vous.
la source
'saved' was marked as unused but was used
La seule façon simple et portable de marquer une variable comme utilisée est… de l'utiliser.
Vous serez peut-être satisfait des extensions spécifiques au compilateur déjà décrites.
la source
LA SOURCE
la source
essayez avec: l'attribut __unused. Fonctionne dans Xcode 5
la source
Vous pouvez définir "Non" l' avertissement du complilateur LLVM 2.0 sur "Release"
la source
C'est ainsi que vous le faites en C et donc aussi en Objective-C.
Même si les avertissements ne sont pas activés, il est toujours judicieux de marquer la valeur de retour comme explicitement ignorée. Cela montre également aux autres développeurs que vous n'avez pas simplement oublié la valeur de retour - vous avez en effet explicitement choisi de l'ignorer.
EDIT: les compilateurs ignorent les castings
void
, donc cela ne devrait pas affecter les performances - c'est juste une belle annotation humaine propre.la source
(void)
est la manière la plus claire de procéder, merci!Faites-le prendre deux lignes. Séparez la déclaration et la valeur par défaut
la source