Pergunta

Eu sou bastante novo para Objective-C e estou tendo dificuldade para entender a mensagem de aviso para o seguinte bloco de código:

void PrintPathInfo() {
    NSString *path = @"~";  
    NSString *message = @"My home folder is: ";

    NSLog([message stringByAppendingString: [path stringByExpandingTildeInPath]]);
}

Esta é a mensagem de aviso que estou recebendo para a última linha (chamada para NSLog):

warning: format not a string literal and no format arguments

Alguém por favor pode esclarecer? É este uma mensagem de aviso que eu deveria estar preocupado?

Graças.

Foi útil?

Solução

O seu código deve funcionar muito bem, mas poderia se comportar mal, se houver algum '%' formatação caracteres na string passada - que poderiam confundir NSLog. Por exemplo, tentar trocar isso em seu código:

NSString *message = @"My home %folder is: ";

NSLog irá interpretar isso '% f' de uma maneira ruim.

Você pode evitar o aviso (eo perigo), usando um literal string com formatação e passando em suas cordas, como este:

NSLog(@"%@%@", message, [path stringByExpandingTildeInPath]);

Você também pode verificar este link:

http://www.cocoabuilder.com/archive / mensagem / cacau / 2009/8/29/243819

Boa sorte!

Outras dicas

Se você quiser escrever a saída para NSLog você precisa de algo como isto:

NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top