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.

È stato utile?

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]);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top