Eu entendo exatamente por que ocorrem avisos de variáveis não utilizadas. Não quero suprimi-los em geral, porque eles são incrivelmente úteis na maioria dos casos. No entanto, considere o seguinte código (inventado).
NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
O Xcode relata que saved
é uma variável não usada, quando é claro que não é. Suspeito que seja porque NSAssert1
é uma macro. A NS_BLOCK_ASSERTIONS
macro não está definida, portanto, as asserções do Objective C estão definitivamente habilitadas.
Embora não machuque nada, acho isso desarrumado e irritante, e quero suprimi-lo, mas não tenho certeza de como fazer isso. Atribuir a variável a si mesma elimina o aviso do compilador, mas prefiro fazer da maneira "certa", se tal coisa existir.
fonte
'saved' was marked as unused but was used
No Xcode você pode definir os avisos para "Variáveis não utilizadas". Vá para "Build Settings" para o destino e filtre com a palavra "unused"
Aqui está uma captura de tela:
Eu sugiro que você apenas altere para Debug. Dessa forma, você não perderá nada em sua versão de lançamento.
fonte
Tente assim. Está funcionando para mim. Vai funcionar para você também.
fonte
'saved' was marked as unused but was used
A única maneira simples e portátil de marcar a variável como usada é ... usá-la.
Você pode estar feliz com as extensões específicas do compilador já descritas, no entanto.
fonte
FONTE
fonte
tente com: atributo __unused. Funciona no Xcode 5
fonte
Você pode definir o aviso do complilador LLVM 2.0 "Não" no "Release"
fonte
É assim que você faz em C e, portanto, também em Objective-C.
Mesmo que você não tenha os avisos habilitados, é sempre uma boa ideia marcar o valor de retorno como explicitamente ignorado. Isso também mostra a outros desenvolvedores que você não apenas se esqueceu do valor de retorno - na verdade, optou explicitamente por ignorá-lo.
EDIT: Compiladores ignoram cast para
void
, então não deve afetar o desempenho - é apenas uma anotação humana limpa e agradável.fonte
(void)
é a maneira mais fácil de fazer, obrigado!Faça ocupar duas linhas. Separe a declaração e o valor padrão
fonte