Domanda
Sono abbastanza nuovo in Object-C e ho difficoltà a comprendere il messaggio di avviso per il seguente blocco di codice:
void PrintPathInfo() {
NSString *path = @"~";
NSString *message = @"My home folder is: ";
NSLog([message stringByAppendingString: [path stringByExpandingTildeInPath]]);
}
Questo è il messaggio di avviso che sto ricevendo per l'ultima riga (chiama NSLog):
warning: format not a string literal and no format arguments
Qualcuno può chiarire, per favore? È un messaggio di avvertimento di cui dovrei preoccuparmi?
Grazie.
Soluzione
Il codice dovrebbe funzionare correttamente, ma potrebbe comportarsi in modo errato se nella stringa passata sono presenti caratteri di formattazione '%', che potrebbero confondere NSLog. Ad esempio, prova a scambiarlo nel tuo codice:
NSString *message = @"My home %folder is: ";
NSLog interpreterà male '% f'.
Puoi evitare l'avvertimento (e il pericolo), usando una stringa letterale con formattazione e passando le tue stringhe, in questo modo:
NSLog(@"%@%@", message, [path stringByExpandingTildeInPath]);
Puoi anche controllare questo link:
http://www.cocoabuilder.com/archive / messaggio / cacao / 2009/8/29/243819
Buona fortuna!
Altri suggerimenti
Se vuoi scrivere l'output su nslog hai bisogno di qualcosa del genere:
NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);