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.
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]);