Frage

Ich bin ziemlich neu in Objective-C und Mühe habe für den folgenden Codeblock der Warnmeldung zu verstehen:

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

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

Dies ist die Warnmeldung mich für die letzte Zeile immer bin (Aufruf zum NSLog):

warning: format not a string literal and no format arguments

Kann jemand bitte erklären? Ist das eine Warnmeldung ich sein sollte besorgt?

Danke.

War es hilfreich?

Lösung

Ihr Code sollte gut funktionieren, aber konnte sich schlecht benehmen, wenn es eine ‚%‘ sind Formatierungszeichen in der übergebenen Zeichenkette - das NSLog verwirren könnte. Zum Beispiel, versuchen Sie dies in Ihren Code Swapping:

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

NSLog interpretiert, dass '% f' in einem schlechten Weg.

Sie können die Warnung vermeiden (und die Gefahr), durch eine Stringliteral mit Formatierung verwenden und in den Saiten, wie folgt übergeben:

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

Sie können auch diese Verbindung überprüfen:

http://www.cocoabuilder.com/archive / message / Kakao / 2009/8/29/243819

Viel Glück!

Andere Tipps

Wenn Sie möchten, um die Ausgabe zu schreiben, um Sie so etwas wie dieses müssen NSLog:

NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top